select 标签逻辑问题 rails

Problems with select tag logic rails

我有一个属于 Product 模型的 SoldHistory 模型,还有一个 Branch 模型。在产品展示页面中,有一个用于创建 SoldHistory sold:integer 属性的表单。我正在尝试将 select 标记添加到将从 Branch 模型中选取对象的表单。

<%= form_for [@product, @product.sold_histories.build, @branch = Branch.find(:all)] do |f| %>
    <%= f.label "Dispatch: "%>
    <%= f.number_field :sold %>
    <%= f.select :branch, options_from_collection_for_select(@branch, "id", "name") %>
    <%= f.submit "Enter" %>
  <% end %>

我试过了,但它一直说找不到 id=all 的分支

请问我做错了什么?

这可能对您有所帮助

<%= f.select :branch, options_for_select(@branch.collect {|a| [a.name, a.id]}) %>

您可以在您的控制器操作中获取@branches,而无需在表单标签中编写

<%= form_for [@product, @product.sold_histories.build, @branch = Branch.find(:all)] do |f| %>

@branch = Branch.find(:all)更改为@branch = Branch.all

编辑:为什么不将@branch 赋值放在表单块中?像这样:

<%= form_for [@product, @product.sold_histories.build] do |f| %>
  <% @branch = Branch.find(:all) %>
  ...
<% end %>