fields_for helper:需要在rails视图中呈现一个文本区域

时间:2014-03-25 06:32:26

标签: ruby-on-rails ruby nested-attributes nested-loops form-helpers

我在rails中遇到了fields_for helper的问题。我有一个问题模型,有很多答案。 当我显示用户填写答案的表单时,我只想要一个文本区域来呈现特定问题。使用我当前的循环结构,它会为每个问题呈现3个文本区域。 (在我的例子中,他们是3个问题)。

好的代码:

<div class="row">
  <div class="large-12 columns panel">
    <%= form_for(@evaluation_form) do |f| %>
      <%= render 'application/errors', f: f %>

        <%= f.fields_for :questions do |question_form| %>
          <p><%= question_form.object[:title]  %></p>

          <%= question_form.fields_for :evaluation_form_answers do |answer_form| %> 

            <%= answer_form.text_area :answer, value: question_form.object.evaluation_form_answers.where(["student_id = ? and evaluation_form_question_id = ?", "#{current_student.id}", "#{question_form.object[:id]}"]).first.answer %>
            <%= answer_form.hidden_field :user_id, :value => current_user.id%>  

          <%end%>

        <%end%>
      <div class="actions">
        <%= f.submit "Submit Evaluation Form" %>
      </div>
    <% end %>
  </div>
</div>

我的控制器代码:

 def answer        
       @evaluation_form.questions.each do |question|        
         question.evaluation_form_answers.build
       end    
  end

涉及的模型之间的关系:

Question: has_many :evaluation_form_answers  
          accepts_nested_attributes_for :evaluation_form_answers, allow_destroy: true  

EvaluationFormAnswer : belongs_to :evaluation_form_question

问题的屏幕截图:enter image description here

2 个答案:

答案 0 :(得分:1)

试试这个。

控制器

def answer        
     @evaluation_form.questions.each do |question|        
         @answer_form = question.evaluation_form_answers.build
     end
end    

查看

<%= question_form.fields_for :evaluation_form_answers, @answer_form do |answer_form| %> 

答案 1 :(得分:-1)