form_for中一个或多个range_field的正确格式

时间:2016-04-20 09:26:44

标签: ruby-on-rails

我在form_for中有一个range_field,我不知道如何正确地将控制器和数据库所需的值传递给它。

似乎没有关于我能找到的range_field的信息。 This是我能找到的唯一类似的问题。

range_field(object_name,method,options = {})public

我希望单击“下一步”时将:value, :food_id, :user_id, :vas_question_id保存在新的vas_answer中。我是否需要利用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

1 个答案:

答案 0 :(得分:2)

我认为你的方法可能有点困惑。我建议或许使用涉及表单和嵌套表单的不同方法,而不是遍历每一行并解释失败。查看关于主题的Rails Cast:

http://railscasts.com/episodes/196-nested-model-form-part-1

这是一个较旧的主题,但它应该可以帮助您将表单结构理顺一些。他有一个关于这个主题的最新演员,但你必须成为会员才能看到它:

http://railscasts.com/episodes/196-nested-model-form-revised

我会说用这种模式重组你的表格,然后再回答另一组问题。从最简单的结构形式开始,使其工作,然后增加复杂性。

希望有所帮助。

更新:我在Reddit上看到了你的帖子。你似乎是奇科州学生的事实可能会阻止人们“做你的功课”。我尝试以一种让你学习Rails方式的方式回答,而不是为你解决问题。