两个f.select选项之间的差异

时间:2010-10-27 22:52:47

标签: ruby-on-rails-3

希望这只是一个快速的......

我有一个表单来编辑产品,每个产品都属于一个类别。 在form_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) %>

第一个选项会在编辑产品时记住该类别,第二个选项则不会。 任何人都可以告诉我为什么?有没有办法在这个场景中使用options_from_collection_for_select并让它在编辑时记住该类别?

干杯, 亚当

3 个答案:

答案 0 :(得分:4)

Codeglot的答案应该是:

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

(请参阅Rails: undefined method `map' for Ingredient获取解释)

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

试试这个:

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