Rails选择字段助手与块不按预期工作
问题描述:
我想通过一个块到栏select
字段帮助器生成选项与data
属性,但它会导致错误。我做错了吗?Rails选择字段助手与块不按预期工作
我的(简化的)例子失败代码看起来是这样的:
<%= f.select :item do
Item.all.each do |item|
content_tag(:option, item.title)
end
end %>
的错误是:undefined method 'empty?' for nil:NilClass
。它来自@choices
,在this line of actionview上为零。
这是Rails为提交使用块的能力:
https://github.com/rails/rails/commit/57bf92c6de125adc45bb006115d22d07270618b3 https://github.com/rails/rails/commit/1c6bcefe7e87e1b9c7b2177717bbdc3986806391(DOC)
的文档表明,它应该工作,因为我有它。我错过了什么?谢谢!
答
有相同的问题,并花了几个小时在围栏中挖掘,直到我有一个很好的看待测试案例。因此,对于谁比谁有同样的问题在这里结束的利益......
诀窍是块使用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 -%>
你尝试你的代码?它给出了同样的错误。任何数组或枚举器都会导致相同的错误。我在问题中发布的代码是'available_campaigns'文档示例结尾的块示例的简化版本。 – 2014-09-12 13:01:03