Rails选择字段助手,块不能按预期工作

时间:2014-09-12 10:28:40

标签: ruby-on-rails actionview

我正在尝试将块传递给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)

文档表明它应该像我一样工作。我错过了什么?谢谢!

3 个答案:

答案 0 :(得分:1)

有同样的问题,花了几个小时在轨道上挖掘,直到我好好看看测试用例。所以对于那些在这里遇到同样问题的人来说,这是有益的......

诀窍是在块中使用concat

<%= f.select :item do
  Item.all.each do |item|
    concat content_tag(:option, item.title)
  end
end %>

看起来文档中的示例是错误的。

答案 1 :(得分:0)

试试这个:

<%= f.select :item do
  Item.all.collect do |item|
    [item.title, item.id]
  end
end %>

或参考doc

答案 2 :(得分:0)

将线条移动到单独的erb块中,明确指出要输出的行:

<%= f.select :item do %>
  <%- Item.all.each do |item| -%>
    <%= content_tag(:option, item.title) %>
  <%- end -%>
<%- end -%>
相关问题