принять вложенные атрибуты для has_many и has_many через в той же форме - PullRequest
0 голосов
/ 30 августа 2018
class User < ActiveRecord::Base
  has_many :tasks
  has_many :task_items, through: :task
  accepts_nested_attributes_for :task
  accepts_nested_attributes_for :task_item
end

class Task < ActiveRecord::Base
 belongs_to :user
 has_many :task_item
end

class TaskItem < ActiveRecord::Base
  belongs_to :task
end

Я могу получить и сохранить данные формы для Задачи, используя form_for в пользовательской форме.

<%= fields_for :user, user do |f| -%>
 <%= f.fields_for :task do |builder| %>
  <%=builder.text_field :name%>
<%end%>
<% end %>

Я хочу принять атрибуты для Task, а также TaskItem в самой форме пользователя, используя form_for. Невозможно понять, как это сделать.

Я пытался с:

<%= fields_for :user, user do |f| -%>
 <%= f.fields_for :task do |builder| %>
   <%=builder.text_field :name%>
   <%= f.fields_for builder.object.checklist do |builder_1| %>
     <%builder_1.object.each do |bb|%>
      <%= bb.check_box :completed%>
     <%end%>
   <%end%>
 <%end%>

Это дает неопределенный метод `check_box 'для # Я хочу иметь возможность создавать пользователя, записи его задач и элементов задач, используя одну форму. Любые решения приветствуются.

1 Ответ

0 голосов
/ 03 сентября 2018

У вас много ошибок плюрализации. Проверьте эти изменения:

class User < ActiveRecord::Base
  has_many :tasks
  has_many :task_items, through: :tasks     #not task
  accepts_nested_attributes_for :tasks      #not task
  accepts_nested_attributes_for :task_items #not task_item
end

class Task < ActiveRecord::Base
 belongs_to :user
 has_many :task_items #not task_item
end

class TaskItem < ActiveRecord::Base
  belongs_to :task
end

Тогда вид:

<%= fields_for :user, user do |f| %>
  <%= f.fields_for :tasks do |builder| %>
    <%= builder.text_field :name %>
    <%= builder.fields_for :task_items do |ti| %>
      <%= ti.check_box :completed %>
    <% end %>
  <% end %>
<% end %>
...