Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Get在其他实体的对象创建窗体中包含多个相关实体的对象_Ruby On Rails_Ruby_Data Modeling_Embedded Ruby - Fatal编程技术网

Ruby on rails Get在其他实体的对象创建窗体中包含多个相关实体的对象

Ruby on rails Get在其他实体的对象创建窗体中包含多个相关实体的对象,ruby-on-rails,ruby,data-modeling,embedded-ruby,Ruby On Rails,Ruby,Data Modeling,Embedded Ruby,我有一个关于双向数据模型的问题。我有两个模型:书和作者 书可以有很多作者,作者也可以有很多书 我已经在每个实体的控制器的“新建”操作中创建了表单,以创建实体对象,我想让每个实体创建表单都可以通过复选框获得其他实体对象的列表,这样用户就可以轻松地从现有作者中选择新书作者,反之亦然。我该怎么做 以下是两种型号的代码: class Book < ActiveRecord::Base has_many :relationships has_many :authors, through: :

我有一个关于双向数据模型的问题。我有两个模型:书和作者

书可以有很多作者,作者也可以有很多书

我已经在每个实体的控制器的“新建”操作中创建了表单,以创建实体对象,我想让每个实体创建表单都可以通过复选框获得其他实体对象的列表,这样用户就可以轻松地从现有作者中选择新书作者,反之亦然。我该怎么做

以下是两种型号的代码:

class Book < ActiveRecord::Base
  has_many :relationships
  has_many :authors, through: :relationships
  validates :name, presence: true, uniqueness: { case_sensitive: false }
end

class Author < ActiveRecord::Base
  has_many :relationships
  has_many :books, through: :relationships
  validates :name, presence: true, uniqueness: { case_sensitive: false }
end
及表格守则:

<%= form_for(@book) do |f| %>
  <%= render 'shared/error_messages', object: @book %>

  <%= f.label :name %>
  <%= f.text_field :name %>

  <%= f.submit "Create book", class: "btn btn-large btn-primary" %>
<% end %>

<%= form_for(@author) do |f| %>
  <%= render 'shared/error_messages', object: @author %>

  <%= f.label :name %>
  <%= f.text_field :name %>

  <%= f.submit "Create author", class: "btn btn-large btn-primary" %>
<% end %>

到目前为止你试过什么?这看起来像脚手架代码?你试过什么?你在哪里绊倒了?你在寻找一个有很多贯穿关系的属性。这应该会让你开始: