【问题标题】:How to check checkbox in the "has_many :through" association?如何检查“has_many :through”关联中的复选框?
【发布时间】:2013-10-29 10:04:58
【问题描述】:

我有这些模型:

class Category < ActiveRecord::Base  
  has_many :product_categories, :dependent => :destroy
  has_many :product, :through => :product_categories
end

class Product < ActiveRecord::Base 
  has_many :product_categories, :dependent => :destroy
  has_many :categories, :through => :product_categories
end

class ProductCategory < ActiveRecord::Base
  belongs_to :category
  belongs_to :product
end

观点:

- Category.order('title').each do |category|
  = check_box_tag :product_categories_ids, category.id, @product.product_categories.include?(category), :name => 'product[product_categories_ids][]'
  = label_tag :product_categories_ids, category.title

当我打印出@product.product_categories:

= @product.product_categories.inspect

输出是:

[#<ProductCategory id: 5, product_id: 9, category_id: 9, created_at: "2013-10-29 01:06:54", updated_at: "2013-10-29 01:06:54">, #<ProductCategory id: 6, product_id: 9, category_id: 7, created_at: "2013-10-29 01:06:54", updated_at: "2013-10-29 01:06:54">]

我认为这就是此处未选中各个复选框的原因:

= check_box_tag :product_categories_ids, category.id, @product.product_categories.include?(category), :name => 'product[product_categories_ids][]'

如何更新这部分,检查是否所有的复选框都应该被选中:

@product.product_categories.include?(category)

?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby checkbox has-many-through


    【解决方案1】:

    错误在这一行:

     = check_box_tag :product_categories_ids, category.id, @product.product_categories.include?(category), :name => 'product[product_categories_ids][]'
    

    如果我理解正确,您想检查产品类别数组是否包含给定的类别。如果是这样,你应该改变

    `@product.product_categories.include?(category)` 
    

    `@product.categories.include?(category)`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      相关资源
      最近更新 更多