我正在尝试构建一个应用程序,其中有一个“工作”模型,该模型可以与使用连接表跟踪关联的“标签”模型相关联。我想发现可以使用基于资源的 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
再培训局:
<%= form_for [Job.new], :remote => true do |form| %>
...
<% form.label ???????? %>
<% form.check_box ???????? %>
...
<% end %>
这甚至可以通过基于资源的 form_for 实现吗?我还没有找到任何涉及这种资源关系的例子。