Ruby on rails Rails选择块未按预期工作的字段辅助对象
我试图将一个块传递给railsRuby on rails Rails选择块未按预期工作的字段辅助对象,ruby-on-rails,actionview,Ruby On Rails,Actionview,我试图将一个块传递给railsselectfield helper以生成具有data属性的选项,但它会导致一个错误。我做错了吗 我的(简化的)失败代码示例如下所示: <%= f.select :item do Item.all.each do |item| content_tag(:option, item.title) end end %> 错误是:未定义nil:NilClass的方法“empty”。它来自于@choices为空
select
field helper以生成具有data
属性的选项,但它会导致一个错误。我做错了吗
我的(简化的)失败代码示例如下所示:
<%= f.select :item do
Item.all.each do |item|
content_tag(:option, item.title)
end
end %>
错误是:未定义nil:NilClass的方法“empty”
。它来自于@choices
为空
这是Rails提交使用块的能力:
(doc)
医生建议它应该像我现在这样工作。我错过了什么?谢谢 试试这个:
<%= f.select :item do
Item.all.collect do |item|
[item.title, item.id]
end
end %>
或者参考。也有同样的问题,我花了几个小时在rails中搜索,直到我仔细查看了测试用例。所以,为了其他人的利益,谁在这里结束了同样的问题 诀窍是在块中使用
concat
:
<%= f.select :item do
Item.all.each do |item|
concat content_tag(:option, item.title)
end
end %>
看起来文档中的示例是错误的。将行移动到单独的erb块中,明确显示要输出的行:
<%= f.select :item do %>
<%- Item.all.each do |item| -%>
<%= content_tag(:option, item.title) %>
<%- end -%>
<%- end -%>
您是否尝试了您的代码?它给出了同样的错误。任何数组或枚举数都会导致相同的错误。我在问题中发布的代码是doc示例末尾“available_campaigns”的block示例的简化版本。