未定义的方法`collection_check_boxes'

时间:2013-06-17 04:08:22

标签: ruby-on-rails-3 forms formtastic

我正在尝试制作发票应用。创建发票的表单应包含一组复选框,以便用户可以选择要开票的课程,但我收到此错误:undefined method '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 %>

1 个答案:

答案 0 :(得分: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名称参数以使您的复选框名称符合rails约定。)

或者,如果您在标记时使用formtastic,则可以使用:

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