Ruby on rails Rails 3中的集合选择帮助器
我有一个关于Rails 3中的collection_select helper的快速问题 我想创建一个下拉字段,用户可以从列表中选择一个国家 我的代码当前看起来像这样:Ruby on rails Rails 3中的集合选择帮助器,ruby-on-rails,ruby,helper,Ruby On Rails,Ruby,Helper,我有一个关于Rails 3中的collection_select helper的快速问题 我想创建一个下拉字段,用户可以从列表中选择一个国家 我的代码当前看起来像这样: <%= collection_select(:country,:id,SyncedCountry.order('name ASC'),:name,:name,{},{:class => "input-xlarge"}) %> 我真正想要的是下拉列表中所选国家的id,而不是散列格式。所以结果更像是: “国家”=
<%= collection_select(:country,:id,SyncedCountry.order('name ASC'),:name,:name,{},{:class => "input-xlarge"}) %>
我真正想要的是下拉列表中所选国家的id,而不是散列格式。所以结果更像是:
“国家”=>1(所选国家的id)
有什么想法吗 来自:
collection\u select(object、method、collection、value\u method、text\u method、options={}、html\u options={})public
:value\u方法
和:text\u方法
参数是要调用的方法
在集合的每个成员上。返回值用作值
每个
标记的属性和内容。他们可以
也可以是响应调用的任何对象,例如proc,它将
为集合的每个成员调用以检索值/文本
因此,请尝试:
<%= collection_select(:country,:id,SyncedCountry.order('name ASC'),:id,:name,{},{:class => "input-xlarge"}) %>
如果@post.author\u 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>
请选择
海涅迈尔·汉森博士
D.托马斯
克拉克先生
(这将返回“author_id”=>“1”)
现在,我不熟悉您的模型,但如果您选择用户所在的国家/地区,我认为这应该可行:
<%= collection_select(:user, :country_id,SyncedCountry.order('name ASC'),:id,:name,{},{:class => "input-xlarge"}) %>
“input xlarge”})%>
更换
<%= collection_select(:country,:id,SyncedCountry.order('name ASC'),:name,:name,{},{:class => "input-xlarge"}) %>
“input xlarge”})%>
与
“input xlarge”})%>
其中model\u object
是传递给表单的对象。如果它是用户的表单
,并且您的表单看起来像(@user)的表单,则将:model\u object
替换为:user
因此,param看起来像“user”=>{“country”=>“antiles”}
,假设您正在为用户设置country。这很有效,但是param看起来像这样:country”=>{“id”=>“1”}
无论如何都不能将param作为散列传递,所以我只获取id,即“country”=>1。
<%= collection_select(:user, :country_id,SyncedCountry.order('name ASC'),:id,:name,{},{:class => "input-xlarge"}) %>
<%= collection_select(:country,:id,SyncedCountry.order('name ASC'),:name,:name,{},{:class => "input-xlarge"}) %>
<%= collection_select(:model_object,:country,SyncedCountry.order('name ASC'),:name,:name,{},{:class => "input-xlarge"}) %>