我已經在問題和答案模型之間構建了嵌套資源。這是形式我用來創建問題,我只是包裝相關的信息:爲什麼rails通過方法保存對象時嵌套字段的順序顛倒保存
<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個字段。這是HTML代碼4的textarea的時候都在渲染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,但是當我保存的問題,答案的順序是相反的,例如:
如果i型4答案A,B,C,D
對應於形式textarea的順序是0,1,2,3
,當問題被保存時,它顯示此:D,C,B,A
,這意味着它保存的文本區域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
的軌道或我的顯示形式?
如何創建@questions變量?在控制器中有沒有'.order()'代碼或模型中有默認的排序集? –
我剛剛使用'@question = Question.new(params [:question])'和'@ question.save'來創建問題對象。 – Thanh
澄清:如何在索引視圖中創建@questions變量**?只顯示控制器和_Question_模型中的_index_動作。 –