ruby-on-rails - Rails 3 has_and_belongs_to_many 在 View 中创建复选框

标签 ruby-on-rails associations

基于以下模型

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/

相关文章:

ruby-on-rails - Rails3 : how do I set the root of my app to application#index?

ruby-on-rails - 安装 rails 3 后如何访问 rails 2.3.x 命令?

ruby-on-rails - #<SimpleForm::FormBuilder> 的未定义方法 'link_to_add\remove'

ruby-on-rails - Bootstrap 3 - 如何使 glyphicon 和 text_field_tag 对齐?

ruby-on-rails - Rails 进阶协会

javascript - Rails 5,Cocoon Gem - 嵌套形式中的嵌套形式

ruby-on-rails - 很抱歉,当用户尝试注册时,heroku 出现了问题

java - 一对多类型关联的策略,其中 "many"辅助条目以百万计

ruby-on-rails - 基于现有资源的具有挑战性的 Rails 问题

ruby-on-rails - 一个模型可以属于多个模型吗?