0

有很多关于这个的帖子......我很确定我的语法是正确的,但出于某种原因

:select => "some value or text" 对我不起作用。

这是我的表格:

=form_for(@pet) do |f|
 =f.label :name
 =f.text_field :name, :placeholder => 'enter pet name...'
 %p
   =f.label :species
   =f.text_field :species, :placeholder => 'enter species name...'
 %p
   =f.label :color
   =f.text_field :color, :placeholder => 'enter color of pet...'
 %p
   =f.label :pet_store_id
   = f.collection_select(:pet_store_id, PetStore.all, :id, :name, {:selected => "Moe's Mammals"})

   = f.select(:pet_store_id, PetStore.all.map {|p| [p.name,p.id]}, :selected => "Moe's Mammals")

 %p
   =f.submit

查看最后一个...它将列出我所有的 PetStore 名称,这正是我想要的,但它始终默认为该列表中的第一个名称....即使“Moe's Mammals”是另一家宠物店的确切名称这是在下拉列表中。

第二个 f.select 在不同的语法中只是同一件事......但它也不起作用。即使 :prompt => "whatever" 也能正常工作。它让我相信 :selected 对 ruby​​ 没有任何意义

4

1 回答 1

0

嗨,只需使用选定的 id。

 = f.select(:pet_store_id, PetStore.all.map {|p| [p.name,p.id]}, :selected => desired_pet_store.id)
于 2014-06-13T20:26:32.667 回答