我在问答模型之间建立了一个嵌套资源。这是我用来创建问题的表格,我只是包装相关信息:
<fieldset>
<legend>Question</legend>
<%= render 'new_question_fields', question_form: question_form %>
<legend>Answer</legend>
<%= question_form.simple_fields_for :answers do |answer_form| %>
<%= render 'answer', f: answer_form %>
<% end %>
</fieldset>
这是我的answer
部分:
<div class="answer_fields well fields">
<%= f.input :correct, label: 'This answer is correct.' %>
<%= f.input :content, input_html: { rows: 3, class: 'span6' } %>
</div>
这是我的索引页面,显示问题:
<ul class="questions">
<% @questions.each do |question| %>
<li><%= question.content %></li>
<ol class="answers">
<% question.answers.each do |answer| %>
<li><%= answer.content %></li>
<% end %>
</ol>
<% end %>
</ul>
在创建新问题的页面上,我为 4 个问题的答案构建了 4 个字段。这是 4 个文本区域的 html 代码,当它们在 html 中呈现时:
<textarea cols="40" id="question_answers_attributes_0_content" name="question[answers_attributes][0][content]" rows="3"></textarea>
<textarea cols="40" id="question_answers_attributes_1_content" name="question[answers_attributes][1][content]" rows="3"></textarea>
<textarea cols="40" id="question_answers_attributes_2_content" name="question[answers_attributes][2][content]" rows="3"></textarea>
<textarea cols="40" id="question_answers_attributes_3_content" name="question[answers_attributes][3][content]" rows="3"></textarea>
比如说,我的字段顺序是 0,1,2,3,但是当我保存问题时,答案的顺序是相反的,例如:
如果我输入了 4 个答案A,B,C,D
,对应表单上 textarea 的顺序是0,1,2,3
,当问题被保存时,它会显示:D,C,B,A
,这意味着它首先保存了 textarea 的值question[answers_attributes][3][content]
,然后question[answers_attributes][2][content]
...
更新:这是我的索引并在问题控制器中创建操作:
def index
@questions = Question.where("user_id = ?", current_user.id).paginate(page: params[:page], per_page: 10)
end
def create
@question = Question.new(params[:question])
@question.question_type_id = params[:question_type_id]
@question.user_id = current_user.id
if @question.save
flash[:success] = "Successfully created question."
redirect_to questions_url
else
render 'new'
end
end
我的answer
模型:
class Answer < ActiveRecord::Base
attr_accessible :content, :question_id, :correct
belongs_to :question
end
保存问题时会发生什么?这是因为save
rails的方法还是我的显示形式?