【问题标题】:rails: using collection_check_boxes in each categoryrails:在每个类别中使用 collection_check_boxes
【发布时间】:2017-06-09 20:22:20
【问题描述】:

使用

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

在我的项目中,它自己的作品就好了。这样,每个员工都展示了所有技能,以及他们是否被检查过。

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

谁能推荐一个正确的方法,为每个类别正确使用collection_check_boxes,以便只显示与该类别相关的技能? 我想我只是错过了“Skill.all”参数的正确限制。

最后应该是这个样子,但不是提交按钮(通过使用 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:仍然没有进展。有人知道如何做到这一点吗?

解决方案:

好的,解决方案非常简单。我只需要声明每个类别的集合,这已经是该应用程序的先前版本。 (为每个类别实例设置了category.skills)。

感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    使用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

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

    【讨论】:

    • 我已经检查过了。没有迹象表明(至少我没有看到任何迹象)如何使用/更改“Author.all”为更小的范围集合,因此类别(在我的情况下)仅显示相关技能。跨度>
    • 您是否尝试将Skill.all 替换为Category.skills
    • 是的,我做到了,但这似乎不起作用。未定义的方法“技能”
    • 你能用你的模特技能和类别编辑你的帖子吗?
    • 试试:category = Category.first 和:category.skills,我不确定,我在我的项目中使用 MongoDB,但我读了这篇文章:stackoverflow.com/questions/41132949/… 以了解你的模型是如何工作的
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 2021-08-06
      相关资源
      最近更新 更多