2013-06-17 3 views
3

인보이스 발행 앱을 만들려고합니다. 인보이스를 만드는 양식에는 체크 박스 모음이 있어야하므로 사용자는 인보이스 할 레슨을 선택할 수 있지만이 오류가 발생합니다 : undefined method 'collection_check_boxes'.정의되지 않은 메소드`collection_check_boxes '

class Lesson < ActiveRecord::Base 
    attr_accessible :lesson_time, :lesson_date, :invoice_id 
    belongs_to :invoice 
end 

class Invoice < ActiveRecord::Base 
    attr_accessible :amount, :due_date 
    has_many :lessons 
end 

그리고보기 :

<%= form_for(@invoice) do |f| %> 
    <fieldset>  
     <%= f.label :lessons %> 
     <%= f.collection_check_boxes(:lessons, Lesson.all, :id, :lesson_date) %>   
    <%= f.submit %> 
    </fieldset> 
<% end %> 

답변

4

collection_check_boxes이 form_builder의 방법은 아닙니다 여기

은 참여 모델입니다. 하나 넣어 :

<%= collection_check_boxes(:lessons, Lesson.all, :id, :lesson_date) %> 

이 모델과 연관되지 않습니다 HTML을 생성은 적절한 응답을받을 것으로 예상 (당신은 MyModel.new(params[my_model]을 사용할 수 없습니다). 직접 my_model.lessons = params [: lessons]를 호출하거나 HTML 이름 매개 변수를 전달하여 확인란 이름을 규칙에 맞게 조정할 수 있습니다.

또는 당신이 그것을 태그 당신이 formtastic를 사용하는 경우, 당신은이를 사용할 수 있습니다

<%= f.input :lessons, :as => :check_boxes, :collection => Lesson.all %> 
+0

Formtastic 입력 방법이 작동합니다! 감사! 따라서 collection_check_boxes는 레일스 헬퍼이지만 form_builder 메소드는 아닙니다. Form_builder는 체크 상자 컬렉션을 처리 할 방법이 없습니다. collection_select는 form_builder 메소드이므로 이상하게 보입니다. – niftygrifty

+1

예, 일반 빌더에서 collection_check_boxes를 호출 할 수 없습니다. 여러 옵션을 매개 변수로 사용할 수있는 f.check_box라는 메서드가 있지만 컬렉션을 반복해야합니다. 네,하지만 html select는 여러 값을 가지므로 체크하지 않아도됩니다. –