2011-09-03 128 views
0

我試圖建立一個應用程序,其中有一個「作業」模型可以與「標記」模型相關聯,其中關聯使用連接表進行跟蹤。我想找到它可以使用基於資源的form_for在表單中添加複選框,以允許用戶選擇與作業關聯的標籤。標籤列表由管理員設置,因此它們不會創建新標籤,而是創建關聯。我不知道如何去做。大多數例子使用博客場景,文章has_many評論,他們正在創建新的評論,並且與我試圖做的非常不同。REST風格form_for通過連接表嵌套資源

型號:

class Job < ActiveRecord::Base 
    has_and_belongs_to_many :tags, :join_table => 'j_map_tags', :class_name => 'Tag', :foreign_key => 'job_id', :association_foreign_key => 'tag_id' 
end 

class Tag < ActiveRecord::Base 
    has_and_belongs_to_many :jobs, :join_table => 'j_map_tags', :class_name => 'Job' 
end 

class JMapTag < ActiveRecord::Base 
    belongs_to :job 
    belongs_to :tag 
end 

加入表遷移:

class CreateJMapTags < ActiveRecord::Migration 
    def self.up 
     create_table :j_map_tags, :id => false do |t| 
      t.column :job_id, :integer 
      t.column :tag_id, :integer 
     end 
    end 

    def self.down 
     drop_table :j_map_tags 
    end 
end 

路線:

resources :jobs, :module => 'manager', :constraints => lambda { |request| request.xhr? } do 
    resources :tags 
end 

ERB:

<%= form_for [Job.new], :remote => true do |form| %> 
    ... 
    <% form.label ???????? %> 
    <% form.check_box ???????? %> 
    ... 
<% end %> 

這甚至可以通過基於資源的form_for?我一直無法找到涉及此類資源關係的任何示例。

回答

0

我認爲這是你需要的:HABTM Checkboxes

+0

謝謝,這樣做更有意義。我迷路了,尋找一種方法來做form.check_box而不是check_box_tag,並且當兩者之間沒有建立任何關係時,如何迭代這組標籤,我感到困惑。 Thaks爲鏈接! – Reuben

+0

沒問題。如果這回答你的問題,請將其標記爲正確答案。 – Mirko

+0

對於那些使用Railscasts訂閱的用戶,修改了HABTM複選框。 http://railscasts.com/episodes/17-habtm-checkboxes-revised –