2017-06-06 39 views
0

使用軌道:使用collection_check_boxes在每個類別

<%= collection_check_boxes(:employee, :skill_ids, Skill.all, :id, :name) %> 
對自己的作品只是在我的項目精細

。這樣,每個員工都會顯示所有技能以及是否進行了檢查。除此之外,我還有一些與技能相關的類別(類別有很多技能)。

任何人都可以推薦一個正確的方法,爲每個類別正確使用collection_check_boxes,以便只顯示與該類別相關的技能? 我想我只是錯過了「Skill.all」參數的正確限制。

最後它應該看起來像這樣,而不是提交按鈕(通過使用jquery-ujs,method: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:

好了,該解決方案是非常簡單的。我只需要在每個類別上聲明集合,這些集合已經用於該應用程序的先前版本。 <%= collection_check_boxes:employee,:skill_ids,category.skills,:id,:name%>(category.skills是爲每個類別的實例設置的)。

感謝您的幫助。

回答

0

好的,解決方案非常簡單。我只需要在每個類別上聲明集合,這些集合已經用於該應用程序的先前版本。 <%= collection_check_boxes :employee, :skill_ids, category.skills, :id, :name%>(category.skills是爲每個類別的實例設置的)。

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

你會發現你需要的一切解決你的問題, 希望幫助

+0

這就是我已經檢查過。沒有跡象表明(至少我沒有看到),如何使用/更改「Author.all」到一個更小的範圍集合,所以類別(在我的情況下)只顯示相關技能。 – Fast

+0

您是否嘗試用'Category.skills'替換'Skill.all'? –

+0

是的,我做了,但似乎沒有工作。未定義的方法「技能」 – Fast