【问题标题】:undefined method `collection_check_boxes'未定义的方法`collection_check_boxes'
【发布时间】:2013-06-17 04:08:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    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 %>
    

    【讨论】:

    • Formtastic 输入法有效!谢谢!那么collection_check_boxes 是Rails 助手而不是form_builder 方法? Form_builder 没有办法处理复选框的集合?这看起来很奇怪,因为 collection_select 是一个 form_builder 方法。
    • 是的,您不能在常规构建器上调用 collection_check_boxes。您有一个名为 f.check_box 的方法,它可以将多个选项作为参数,但您必须遍历集合。是的,但您应该记住,html select 旨在具有多个值,而复选框则不是。
    【解决方案2】:

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

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

    您可能需要改用旧的check_box_tag

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 2013-06-11
      • 2010-12-30
      • 2019-12-25
      • 2021-07-25
      相关资源
      最近更新 更多