2013-07-17 4 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는 where 쿼리의 결과이므로 간단한 연결을 사용할 수 없습니다. 간단한 형태에서

답변

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' 옵션을 추가했습니다. – Viren

+0

@markhorrocks'include_blank => false' 옵션을 사용하여 답변을 편집했습니다. – 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 : location, collection : @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 
관련 문제