products_control-6ren">
gpt4 book ai didi

ruby-on-rails - Rails select_tag 未定义方法 `map' 为 nil :NilClass

转载 作者:行者123 更新时间:2023-12-02 17:23:49 25 4
gpt4 key购买 nike

我的问题已经解决了,但我认为它有点笨拙,所以希望能找到更好的方法,并更好地理解这里发生的事情。

_form.html.erb:

 <%= select_tag(:category_id, options_for_select(@categories), :prompt => "Select one!") %>

products_controller.rb:

def new
@product = Product.new
@categories = Category.all.map { |c| [ c.name, c.id ] }
end

如果用户在未选择任何 select_tag 选项的情况下提交表单,他将收到 undefined method 'map' for nil:NilClass 错误。

我知道这是因为我的 @categoriesnil,但我不知道如何避免这种情况......?

我的最终解决方案是有效的:

<%= select_tag(:category_id, options_for_select(@categories || Category.all.map { |c| [ c.name, c.id ] }), :prompt => "Select one!") %>

但我觉得有更好的方法。我还认为,通过为 :selected 分配默认的 select_tag 值也可能有效,但我无法利用我对 Ruby 语法的了解来实现它...

最佳答案

请试试这种select_tag的方式:

select_tag(:category_id, options_from_collection_for_select(Category.all, :id, :name), include_blank: "Select Category")

如果您遇到任何问题,请告诉我..

关于ruby-on-rails - Rails select_tag 未定义方法 `map' 为 nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40467035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com