Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails选择块未按预期工作的字段辅助对象_Ruby On Rails_Actionview - Fatal编程技术网

Ruby on rails Rails选择块未按预期工作的字段辅助对象

Ruby 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为空

我试图将一个块传递给rails
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示例的简化版本。