基于以下模型
class Company < ActiveRecord::Base
has_and_belongs_to_many :origins
end
class Origin < ActiveRecord::Base
has_and_belongs_to_many :companies
end
我想在我的 companies/_form
中包含一组代表所有来源的复选框。
不知道 companies_controller#create
中的 Company.new(params[:company])
是否可以创建公司与所选来源之间的关联?
我正在运行 Rails 3.0.0,实现它的最佳方法是什么?
感谢您的见解
最佳答案
habtm 现在不是一个流行的选择,最好使用 has_many :through 代替,并在两者之间使用适当的连接模型。这将为您提供 Company#origin_ids= 方法,您可以从您的表单中将一组原始 ID 传递给该方法,以设置 @company 的所有关联来源。例如
<% current_origin_ids = @company.origin_ids %>
<% form_for @company do |f| %>
<label>Name:<%= f.text_field :name %></label>
<% Origin.all.each do |origin| %>
<label><%= origin.name %>
<%= check_box_tag "company[origin_ids][]", origin.id, current_origin_ids.include?(origin.id) %>
</label>
<% end %>
<% end %>
顺便说一句,使用适当的连接模型和相应的 Controller ,您可以使用对连接模型 Controller 的创建/删除调用,使用 AJAX 轻松添加/删除源。
关于ruby-on-rails - Rails 3 has_and_belongs_to_many 在 View 中创建复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3768006/