导轨FormBuilder选择设置与“奇数”关联的选定值
问题描述:
我有这个稍微左侧的中心情况,我无法工作。最简单的问题是,我使用has_one/belongs_to关联来构建此选择,并且它填充正常,并在提交上返回有效值,但如果提交由于某种原因失败(例如,不同的输入验证失败)使用错误消息重新绘制,选择默认为列表中的第一个值,而不是所选的一个......以下是一些上下文。导轨FormBuilder选择设置与“奇数”关联的选定值
我有以下两种型号。第一个是,我从一个PHP应用程序继承并有“玩好”与所以它没有遵循Rails约定表:
class Listing < ActiveRecord::Base
set_primary_key :lid
has_one :site
end
class Site < ActiveRecord::Base
belongs_to :listing
end
你可以看到我有过一个小圈跳转到支付的事实该遗留表使用“盖子”而不是“id”作为其主键。
在我看来,我有这样的形式选择使用::的ActionView ::助手:: FormBuilder选择:
.field
.left.form-label
= f.label :listing
.left.form-field
= f.select(:listing_id, options_from_collection_for_select(Listing.all.sort {|a,b| a.address <=> b.address}, :lid, :address), :prompt => "Please select an address", { :selected => @site.listing_id })
当我做了提交,并返回其他一些零散的原因的错误,选择是设置为列表中的第一个选项,而不是用户实际选择的那个。
其他一些环境。这里是进入PARAMS的保存是注定要失败的第一:
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"X/yqRO0VA0/3GrkGT0sc2KVPd4sVLF2Nd/vnjQM7GOI=", "site"=>
{"domain"=>"butterballasshat.info", "listing_id"=>"937", "user_id"=>"21",
"description"=>"asdf"}, "commit"=>"Save"}
,这里是相关的控制器代码:
def create
@site = Site.new(params[:site])
respond_to do |format|
if success and @site.save
format.html { redirect_to(sites_url, :notice => 'Site was successfully created.') }
format.xml { render :xml => sites_url, :status => :created, :location => @site }
else
format.html { render :action => "new" }
format.xml { render :xml => @site.errors, :status => :unprocessable_entity }
end
end
end
如果您需要任何其他信息,环绕我的问题,你的头我很乐意为它...
答
的要求:
不知道是什么问题,没有看到错误,但解决您的选择问题,添加选定东西向options_from_collection_for_select方法,在下面的结构:options_from_collection_for_select(收集,值,标签,selected_id)
答
这是现在要做到这一点更简单的方法:
<%= f.collection_select(:city_id, City.all, :id, :name) %>
不知道是什么问题没有看到错误,但要解决您选择的问题,请将所选内容添加到*** options_from_collection_for_select ***方法中,结构如下:*** options_from_collection_for_select(collection,value,label,selected_id)*** –
绝对完美。我试图让它进入选择而不是选项生成器。万分感谢。把答案放在答案中,我会接受它... – jaydel