Rails:在ActionView-Helper'collection_select'中预选一个值

Jav*_*ier 5 ruby-on-rails actionview actionviewhelper

我正在尝试让ActionView-Helpercollection_select获取一个将在下拉菜单中预先选择的值.

两者都没有(:selected在html-option-hash中)

<%= collection_select(:my_object, :my_method, @my_collection, :id, :description_string, {}, {:selected => @my_collection_object.id}) %>
Run Code Online (Sandbox Code Playgroud)

也不是(:selected在选项 - 哈希)

<%= collection_select(:my_object, :my_method, @my_collection, :id, :description_string, {:selected => @my_collection_object.id}, {}) %>
Run Code Online (Sandbox Code Playgroud)

似乎工作.

我究竟做错了什么?任何人都可以帮我这个吗?

Joh*_*ley 8

来自文档:

样品使用(选择相关联的Author对的实例Post,@post):

collection_select(:post, :author_id, Author.all, :id, :name_with_initial)
Run Code Online (Sandbox Code Playgroud)

如果@post.author_id已经是1,则会返回:

<select name="post[author_id]">
  <option value="">Please select</option>
  <option value="1" selected="selected">D. Heinemeier Hansson</option>
  <option value="2">D. Thomas</option>
  <option value="3">M. Clark</option>
</select>
Run Code Online (Sandbox Code Playgroud)

因此,您只需确保@my_object.my_method返回与可用选项值之一匹配的值.如果匹配则将选择该选项.