3

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

2 回答 2

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 %>
于 2013-06-17T06:09:37.807 回答
0

我怀疑由于您标记了您的帖子 ruby​​-on-rails-3,您可能正在尝试在 rails 3 项目中使用 rails 4 方法。

http://makandracards.com/makandra/32147-rails-4-introduced-collection_check_boxes

您可能需要使用 good oldcheck_box_tag代替。

于 2015-09-10T10:42:42.473 回答