使用
<%= collection_check_boxes(:employee, :skill_ids, Skill.all, :id, :name) %>
在我自己的项目中工作得很好。这样,每个员工都会显示所有技能以及是否进行检查。
除此之外,我还有一些与技能相关的类别(类别有很多技能)。
任何人都可以推荐一种正确的方法,为每个类别正确使用collection_check_boxes,以便只显示与该类别相关的技能吗? 我想我只是错过了#34; Skill.all&#34;的正确限制。参数。
最后它应该看起来像这样,但不是提交按钮(通过使用jquery-ujs,方法:put),我希望这些技能成为复选框。
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。)
感谢您的帮助。
答案 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。)