Ich habe ein range_field, dass innerhalb einer form_for und ich bin mir nicht sicher, wie die Werte korrekt an den Controller und an die Datenbank übergeben werden.Korrektes Format für ein oder mehrere range_field in form_for
Es scheint nicht sehr viele Informationen über Bereich_Feld zu geben, die ich finden konnte. This war die einzige Frage, die ähnlich war, die ich finden konnte.
range_field (object_name, Methode options = {}) public
Ich will es :value, :food_id, :user_id, :vas_question_id
in einem neuen vas_answer speichern, wenn ich auf Weiter. Muss ich hidden_field verwenden, um dies zu tun?
Es könnte 1-3 Fragen auf jeder Seite geben. Wäre es besser/einfacher, es als ein Array oder als 3 separate Antworten zu speichern?
Relevante Code Schnitt von meiner aktuellen Ansicht:
<%= 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 %>
Controller:
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
Route:
post "vas_questions/:order" => "vas_answers#create", as: :vas_answers