rails:在每个类别中使用collection_check_boxes

时间:2017-06-06 08:39:36

标签: ruby-on-rails

使用

<%= collection_check_boxes(:employee, :skill_ids, Skill.all, :id, :name) %>

在我自己的项目中工作得很好。这样,每个员工都会显示所有技能以及是否进行检查。

除此之外,我还有一些与技能相关的类别(类别有很多技能)。

任何人都可以推荐一种正确的方法,为每个类别正确使用collection_check_boxes,以便只显示与该类别相关的技能吗? 我想我只是错过了#34; Skill.all&#34;的正确限制。参数。

最后它应该看起来像这样,但不是提交按钮(通过使用jquery-ujs,方法:put),我希望这些技能成为复选框。

http://d.pr/i/CYHaGH

Edit1:技能和类别模型

class Category < ApplicationRecord

  has_many :subcategories, class_name: "Category", foreign_key: "parent_id"
  belongs_to :topcategory, class_name: "Category"

  has_many :skills
end

class Skill < ApplicationRecord
  has_many :employeeskillsets, foreign_key: "skill_id"
  has_many :employees, through: :employeeskillsets
  has_many :projectskillsets
  has_many :projects, through: :projectskillsets
  has_many :tagsets, dependent: :destroy
  has_many :tags, through: :tagsets

  belongs_to :category
end

Edit2:仍然没有进展。有人知道如何做到这一点吗?

SOLUTION:

好的,解决方案非常简单。我只需要在每个类别上声明该集合,该集合已经是该应用程序的先前版本。 &lt;%= collection_check_boxes:employee,:skill_ids,category.skills,:id,:name%&gt; (为每个类别实例设置了category.skills。)

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用collection_check_boxes,你可以传递一个这样的块:

collection_check_boxes(:post, :author_ids, Author.all, :id, :name_with_initial) do |b|
  b.label { b.check_box }
end

您可以访问价值,文字等内容:

collection_check_boxes(:post, :author_ids, Author.all, :id, :name_with_initial) do |b|
   b.label(:"data-value" => b.value) { b.check_box + b.text }
end

您应该阅读此处的文档:

https://apidock.com/rails/v4.0.2/ActionView/Helpers/FormOptionsHelper/collection_check_boxes

您将找到解决问题所需的一切, 希望有所帮助

答案 1 :(得分:0)

好的,解决方案非常简单。我只需要在每个类别上声明该集合,该集合已经是该应用程序的先前版本。 <%= collection_check_boxes :employee, :skill_ids, category.skills, :id, :name%>(为每个类别实例设置了category.skills。)