rails ruby 中的多嵌套表单
Multi nested form in ruby on rails
我有一个场景,我的应用程序与三个模型交互,分别称为用户、问题和答案。我从管理面板或通过 rails 控制台为用户添加了三个问题。现在,在单独的操作中,我需要显示特定用户的所有问题,并提供为每个问题添加多个答案作为文本的选项。我不知道如何进一步进行。这是我试过的示例代码。
class User
has_many :questions
accepts_nested_attributes_for :questions
end
class Question
belongs_to :user
has_many :answers
accepts_nested_attributes_for :answers
end
class Answer
belongs_to :question
end
users_controller.rb
class UserController
def display_questions
@user = current_user
end
end
views/display_questions.html.erb
<%= form_for @user do |f| %>
<%= f.fields_for :questions do |q| %>
<%= q.fields_for :answers do |a| %>
<%= a.text_field :name %>
<% end %>
<%= q.link_to_add 'Add', :answers %>
<% end %>
<% end %>
我收到了该用户的所有问题,但无法为个别问题添加答案。我很困惑如何为这些场景构建嵌套字段,感谢您的帮助。谢谢
如果你使用 nested_form gem 就很简单了,只需做:
<%= nested_form_for @user do |f| %>
<%= f.fields_for :questions do |q| %>
<%= q.fields_for :answers do |a| %>
<%= a.text_field :name %>
<% end %>
<%= q.link_to_add 'Add', :answers %>
<% end %>
<% end %>
注意 nested_form_for 而不是 form_for
此外,您还需要为对应的型号添加属性 accepts_nested_attributes_for:
class User < ActiveRecord::Base
has_many :questions
accepts_nested_attributes_for :questions
end
class Question < ActiveRecord::Base
belongs_to :user
has_many :answers
accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
belongs_to :question
end
我有一个场景,我的应用程序与三个模型交互,分别称为用户、问题和答案。我从管理面板或通过 rails 控制台为用户添加了三个问题。现在,在单独的操作中,我需要显示特定用户的所有问题,并提供为每个问题添加多个答案作为文本的选项。我不知道如何进一步进行。这是我试过的示例代码。
class User
has_many :questions
accepts_nested_attributes_for :questions
end
class Question
belongs_to :user
has_many :answers
accepts_nested_attributes_for :answers
end
class Answer
belongs_to :question
end
users_controller.rb
class UserController
def display_questions
@user = current_user
end
end
views/display_questions.html.erb
<%= form_for @user do |f| %>
<%= f.fields_for :questions do |q| %>
<%= q.fields_for :answers do |a| %>
<%= a.text_field :name %>
<% end %>
<%= q.link_to_add 'Add', :answers %>
<% end %>
<% end %>
我收到了该用户的所有问题,但无法为个别问题添加答案。我很困惑如何为这些场景构建嵌套字段,感谢您的帮助。谢谢
如果你使用 nested_form gem 就很简单了,只需做:
<%= nested_form_for @user do |f| %>
<%= f.fields_for :questions do |q| %>
<%= q.fields_for :answers do |a| %>
<%= a.text_field :name %>
<% end %>
<%= q.link_to_add 'Add', :answers %>
<% end %>
<% end %>
注意 nested_form_for 而不是 form_for
此外,您还需要为对应的型号添加属性 accepts_nested_attributes_for:
class User < ActiveRecord::Base
has_many :questions
accepts_nested_attributes_for :questions
end
class Question < ActiveRecord::Base
belongs_to :user
has_many :answers
accepts_nested_attributes_for :answers
end
class Answer < ActiveRecord::Base
belongs_to :question
end