我正在尝试将块传递给rails select
字段助手以生成具有data
属性的选项,但这会导致错误。我做错了吗?
我的(简化)示例失败代码如下所示:
<%= f.select :item do
Item.all.each do |item|
content_tag(:option, item.title)
end
end %>
错误是:undefined method 'empty?' for nil:NilClass
。来自@choices
的{{1}} nil {/ 3}}。
这是使用块的Rails提交:
this line of actionview https://github.com/rails/rails/commit/57bf92c6de125adc45bb006115d22d07270618b3(doc)
文档表明它应该像我一样工作。我错过了什么?谢谢!
答案 0 :(得分:1)
有同样的问题,花了几个小时在轨道上挖掘,直到我好好看看测试用例。所以对于那些在这里遇到同样问题的人来说,这是有益的......
诀窍是在块中使用concat
:
<%= f.select :item do
Item.all.each do |item|
concat content_tag(:option, item.title)
end
end %>
看起来文档中的示例是错误的。
答案 1 :(得分:0)
答案 2 :(得分:0)
将线条移动到单独的erb块中,明确指出要输出的行:
<%= f.select :item do %>
<%- Item.all.each do |item| -%>
<%= content_tag(:option, item.title) %>
<%- end -%>
<%- end -%>