Rails调查提交表单不会将问题和答案呈现为输入字段

时间:2017-01-22 18:02:56

标签: ruby-on-rails forms nested-attributes

被修改

我正在开发一款旨在成为调查猴子的粗略克隆的应用程序。

调查作为“模板”,提交是对该调查模板的回复。

我有一个显示页面,可以显示新提交的表单。我有正确的调查模板和我需要的相关模型/属性(在pry中确认),但我无法获得任何相关的问题和答案作为表单输入字段呈现。

控制器/ surveys_controller.rb

  before_action :set_survey, except: [:index, :new, :create, :home, :mysurveys]

  def show
    @survey.submissions.build
  end

  private

  def survey_params
    params[:survey].permit(:user_id, :title, questions_attributes: [:id, :prompt, :_destroy, answers_attributes: [:id, :content, :_destroy]])
  end

  def set_survey
    @survey = Survey.find(params[:id])
  end

的观点/调查/ show.html.erb

<h1>This is the show page for surveys.</h1>

<h3><%= @survey.title %></h3>

<% if current_user == @survey.user_id %>
  <%= render "mysurvey" %>
<% else %>
  <%= render 'survey_form' %>
<% end %>

的观点/调查/ _survey_form.html.erb

<%= form_for @survey do |f| %>
  <% @survey.questions.each do |q| %>
    <%= q.prompt %>
      <%= f.text_field %>

    <% q.answers.each do |a| %>
      <%= a.content %>
      <%= f.text_field %>

    <% end %>
  <% end %>
<% end %>

我已尝试f.text_field :q:questions:prompt q.prompt。 Rails只返回undefined method

1 个答案:

答案 0 :(得分:1)

您的show.html.erb

<h1>This is the show page for surveys.</h1>

<h3><%= @survey.title %></h3>

<% if current_user == @survey.user_id %>
  <% render "mysurvey" %>
<% else %>
  <% render 'survey_form' %>
<% end %>

应该是什么样的

<h1>This is the show page for surveys.</h1>

<h3><%= @survey.title %></h3>

<% if current_user == @survey.user_id %>
  <%= render "mysurvey" %>
<% else %>
  <%= render 'survey_form' %>
<% end %>