我有這個稍微左側的中心情況,我無法工作。最簡單的問題是,我使用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(collection,value,label,selected_id)*** –
絕對完美。我試圖讓它進入選擇而不是選項生成器。萬分感謝。把答案放在答案中,我會接受它... – jaydel