0
我正在用rails 5寫一個測驗應用程序。用戶會從數據庫中看到多選題。對於每個問題,用戶可以選擇單個選項(單選按鈕)或多個選項(複選框)。這存儲在數據庫中作爲布爾字段'多選'。允許使用具有強參數的表單值
我正在使用form_for構建表單。
<div class="answer-box">
<% if m.object.multiselect %>
<%= m.collection_check_boxes :answer, m.object.options, :id, :option_text, { checked: m.object.options.first.id } %>
<% else %>
<%= m.collection_radio_buttons :answer, m.object.options, :id, :option_text, { checked: m.object.options.first.id } %>
<% end %>
<%= m.hidden_field(:question_id, value: m.object.id) %>
<%= m.hidden_field(:question_type, value: 'Mcq') %>
</div>
在控制器中,我已允許params哈希表如下:
def response_params
params.require(:quiz).permit(
{
mcq_responses_attributes: [
:question_id,
:question_type,
answer: []
]
})
end
問題是,當問題是多選,:答案是一個數組,當它是單選擇,:答案是一個整數。我所做的是檢查是否:answer是一個數組,如果不是,則將單個整數轉換爲數組,然後使用上述函數來允許它。
def create_answer_array
params[:quiz][:mcq_responses_attributes].each do |k, r|
r[:answer] = Array(r[:answer]) unless r[:answer].is_a? Array
end
end
有沒有更好的方法來做到這一點?
我已經編輯我的代碼添加嵌套PARAMS。我需要循環回答response_params中的參數嗎? – meris1889