Ruby on rails 3 两个f.select选项之间的差异

Ruby on rails 3 两个f.select选项之间的差异,ruby-on-rails-3,Ruby On Rails 3,希望这只是一个快速的 我有一个表格来编辑一个产品,每个产品都属于一个类别。 在形式上_for@product我可以通过以下几种方式填充类别的选择框: <%= f.select :category_id, Category.find(:all).collect{|c| [c.category, c.id]}, :prompt => "Pick a Category" %> 或: 第一个选项在编辑产品时会记住类别,第二个选项则不会。 有人能告诉我为什么吗?在本场景中,是否有办法使

希望这只是一个快速的

我有一个表格来编辑一个产品,每个产品都属于一个类别。 在形式上_for@product我可以通过以下几种方式填充类别的选择框:

<%= f.select :category_id, Category.find(:all).collect{|c| [c.category, c.id]}, :prompt => "Pick a Category" %>
或:

第一个选项在编辑产品时会记住类别,第二个选项则不会。 有人能告诉我为什么吗?在本场景中,是否有办法使用_集合中的选项_作为_选择,并让它在编辑时记住类别

干杯, 亚当

试试这个:

<%= f.select :category_id, options_from_collection_for_select(Category.find(:all), :id, :category, params[:category_id].to_i) %>

确保将:name更改为要显示的字段。可能是:name或:title

Codeglot的答案应该是:

<%= f.collection_select :category_id, Category.all, :id , :name %>

请参阅以获取解释

我将:name更改为:category,但使用此命令时出现未定义的“map”方法错误。这也不记得编辑时选择了什么。我的products表中有一个category_id,因此有一个外键。而且,正如我在问题中提到的,选择一个类别%>非常有效。但是无法从\u集合\u中获取任何类型的选项\u,以便\u选择工作!!
<%= f.collection_select :category_id, Category, :id , :name %>
<%= f.collection_select :category_id, Category.all, :id , :name %>