2013-07-17 179 views
23

如何翻譯如下,以簡單的形式?軌道4 simple_form collection_select

<%= form_for(@bill) do |f| %> 

<%= f.label :location_id %> 
<%= f.collection_select(:location_id, @locations, :id, :location_name, 
     {:selected => @bill.location_id}) %> 

因爲@locations是哪裏查詢的結果,我不能用一個簡單的關聯。

回答

56

試試這個

<%= simple_form_for @bill do |f| %> 
    <%= f.input :location,:collection => @locations,:label_method => :location_name,:value_method => :id,:label => "Location" ,:include_blank => false %> 
    <%= f.button :submit %> 
<%end%> 

希望這有助於

+0

作品後,我刪除多餘的「集合」,但它增加了一個空白,我不想要的。 – markhorrocks

+0

@markhorrocks有一個叫做'選項= include_blank> FALSE'只是'include_blank => FALSE'選項 – Viren

+0

@markhorrocks編輯答案這是簡單的形式做的正確方法 – Viren

2

在簡單的形式,如果我們有位置和比爾之間的關聯,比我們可以這樣做:

<%= simple_form_for @bill do |f| %> 
    <%= f.association :location, collection: @locations, priority: @bill.location %> 
    <%= f.button :submit %> 
<% end %> 

希望這會有所幫助。

+0

有是這樣的聯繫,但@locations = Locati on.where(club_id:club_id),但是,看起來像它仍然可以工作? – markhorrocks

+0

這不起作用。 – markhorrocks

+0

如果你沒有比一個適當的關聯關係: <%= f.input:位置,收藏:@locations%> –

6

這裏是最後的:

<%= f.input :location_id, collection: @locations, label_method: :location_name, value_method: :id,label: "Location", include_blank: false, selected: @bill.location_id %> 
+0

添加它 –

0

在你的選址模型,你還可以創建一個:

def to_label 
    location_name 
end