让fields_for可以访问其他模型

时间:2015-11-21 17:49:25

标签: ruby-on-rails ruby-on-rails-4 formbuilder

我正在尝试呈现一个用户可以回答Survey的页面(从而创建Application)。我可以轻松地返回问题(@survey.questions),我也可以使用构建器帮助器呈现用于回答问题的表单。

控制器:

@survey.questions.each do |question|
  @application.answers.build
end

查看:

<%= f.fields_for :answers do |builder| %>
  <%= builder.text_area :answer %>
<% end %>

但问题是,这只会使文本区域回答问题,而不会显示实际的问题文本。

将两者结合起来的正确方法是什么,这样我才能显示问题并允许用户回答?

能够做这样的事情会很棒:

<%= f.fields_for :answers do |builder| %>
  Q: <%= question.question %>
  A: <%= builder.text_area :answer %>
<% end %>

PS如果有人能提出更好的头衔,请做。

2 个答案:

答案 0 :(得分:1)

从Rails 4.0.2开始,您可以访问构建器对象的索引。

<%= f.fields_for :answers do |builder| %>
  Q: <%= @suvery.questions[builder.index].question %>
  A: <%= builder.text_area :answer %>
<% end %>

答案 1 :(得分:1)

question

如果它报告了builder.objectbuilder.object.inspect来电的错误,请执行EventHandler以查看该类型的对象。