【问题标题】:RESTful form_for with nested resources via join table通过连接表使用嵌套资源的 RESTful form_for
【发布时间】:2011-09-03 19:17:46
【问题描述】:

我正在尝试构建一个应用程序,其中有一个“工作”模型,该模型可以与使用连接表跟踪关联的“标签”模型相关联。我想发现可以使用基于资源的 form_for 在表单中添加复选框,以允许用户选择与作业关联的标签。标签列表由管理员设置,因此他们不会创建新标签,而是创建关联。我不知道该怎么做。大多数示例都使用博客场景,其中一篇文章 has_many cmets 并且他们正在创建新的 cmets,这与我正在尝试做的非常不同。

型号:

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 实现吗?我还没有找到任何涉及这种资源关系的例子。

【问题讨论】:

    标签: ruby-on-rails rest form-for nested-resources jointable


    【解决方案1】:

    我想这就是你需要的:HABTM Checkboxes

    【讨论】:

    • 谢谢,这更有意义。我迷失了寻找一种方法来做 form.check_box 而不是 check_box_tag 并且在两者之间尚未建立关系时对如何迭代标签集感到困惑。谢谢你的链接!
    • 没问题。如果这回答了您的问题,请将其标记为正确答案。
    • 对于那些订阅 Railscasts 的人,HABTM 复选框有一个修订版。 railscasts.com/episodes/17-habtm-checkboxes-revised
    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2017-01-24
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多