Ruby on rails 如何制作具有多对多关系的三个模型的表格
为具有多对多关系的模型创建表单的最佳方法是什么 详细内容: 我有3个模型:用户、任务、任务分配:Ruby on rails 如何制作具有多对多关系的三个模型的表格,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,为具有多对多关系的模型创建表单的最佳方法是什么 详细内容: 我有3个模型:用户、任务、任务分配: 用户模型 class User < ActiveRecord::Base has_many :task_assignments has_many :tasks, through: :task_assignments end class Task < ActiveRecord::Base has_many :task_assignments has_many :u
用户模型
class User < ActiveRecord::Base
has_many :task_assignments
has_many :tasks, through: :task_assignments
end
class Task < ActiveRecord::Base
has_many :task_assignments
has_many :users, through: :task_assignments
end
通过创建一个新任务,应该可以为一个任务分配多个用户,因此我创建了以下表单视图: 任务编辑表单视图
<%= form_for(@task) do |f| %>
<div class="field">
<%= f.label :note %><br>
<%= f.text_field :note %>
</div>
<select name="task[users]" size="5" multiple>
<% @users.each do |user| %>
<option value="<%= user.id %>"><%= user.email %></option>
<% end %>
</select>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我想我必须这样做:
@task = Task.new(task_params)
users = ???
@task.users << users
@task=task.new(任务参数)
用户=???
@task.users您不需要以任何特殊方式保存对象。只需记住在任务参数中允许:用户\u id=>[]
此外,使用form helper,您的生活可能会轻松一些
true,:size=>5}%>
有一个名为的帮助器,允许父对象创建和更新其嵌套对象。在这种情况下,您希望任务
能够创建和更新任务分配
首先,允许Task
接受其子任务的属性并为其分配属性
class Task < ActiveRecord::Base
has_many :task_assignments
has_many :users, through: :task_assignments
accepts_nested_attributes_for :task_assignments
end
类任务
这将为你指明正确的方向。创建表单将类似中所述。哦,天哪,我也遇到了同样的问题。看看我的问题并研究投票的答案->
@task = Task.new(task_params)
users = ???
@task.users << users
<%= f.collection_select :user_ids, @users, :id, :email, {}, { :multiple => true, :size => 5 } %>
class Task < ActiveRecord::Base
has_many :task_assignments
has_many :users, through: :task_assignments
accepts_nested_attributes_for :task_assignments
end