私はform_forの中にあるrange_fieldを持っています。コントローラとデータベースに必要な値を正しく渡す方法がわかりません。form_forの1つまたは複数のrange_fieldの正しい書式
私が見つけることができるrange_fieldについての情報はあまりないようです。 Thisは私が見つけることができる似たような唯一の質問でした。
range_field(object_nameの、方法、オプション= {})公共
私は、[次へ]をクリックしたときに、それは新しいvas_answerで:value, :food_id, :user_id, :vas_question_id
を保存したいです。これを行うにはhidden_fieldを利用する必要がありますか?
各ページに1-3つの質問があります。 配列として保存するか、3つの別々の回答として保存する方が良いでしょうか?私の現在のビューから
関連するコードカット:
<%= form_for @answer do |answer| %>
<% @foods.each do |food| %> # there could be 1, 2, or 3 foods
<h4 class="col-md-offset-1 col-md-10" style="font-size: 16px; line-height: 1.6em; clear: both;"><%= @question.prompt_left %> <strong><%= food.name %></strong> <%= @question.prompt_right %></h4>
<%= range_field :vas_answers, :value, min: 1, max: 500, step: 1, class: 'not-clicked', :food_id => food.id, :user_id => current_user.id, :vas_question_id => @question.order %>
# I saw :user_id => user.id on another question so I tried it, but I don't know what it is really doing
<% end %>
<%= answer.submit 'Next', :class => 'col-md-offset-9 btn btn-primary btn-surv' %>
<% end %>
コントローラー:
class VasAnswersController < ApplicationController
before_filter :authenticate_user!
def create
@answer = VasAnswer.new(answer_params[:vas_answers])
@q_num = params[:order] # determine order of questions (not really relevant)
@q_num = @q_num.to_i + 1
respond_to do |format|
if @answer.save
if @q_num < 25
format.html { redirect_to vas_questions_url(@q_num) }
else
format.html { redirect_to demographics_path}
end
end
end
end
private
def answer_params
params.require(:vas_answers).permit(:value, :user_id, :vas_question_id, :food_id)
end
end
ルート:
post "vas_questions/:order" => "vas_answers#create", as: :vas_answers