如何使用ajax更新rails值

时间:2015-11-26 00:51:32

标签: jquery ruby-on-rails ajax

我正在尝试学习铁轨和破坏东西:)

我想解决两个问题。我想创建一个允许用户选择问题数量的下拉菜单,然后我想单独查看这些问题(通过按下一个和上一个)来填写这些问题及其答案。

我跟随Ryan Bates RailsCasts:#197嵌套模型表单第2部分创建嵌套表单。

所以我的结构如下:

测验 - >问题 - >答案

当用户创建新测验时,会询问他们想要创建多少个问题,通过ajax发送值,然后将它们带到该测验的第一个问题页面。

  <% f.select :number_of_questions, (1..20) %>

然后在测验控制器中:

def number_of_questions
  @number_of_questions = params[:number_of_questions]
  # create this many questions in edit and new
end

def new
  @quiz = Quiz.new
  3.times {@quiz.questions.build}  # replace 3 with number of times
end

我只是这样做才能学到新东西。

1 个答案:

答案 0 :(得分:0)

您可能不希望通过ajax发送它,而是作为参数发送。

您必须创建一个显示下拉菜单的表单。

但如果number_of_questions是显示表单的操作,则可以删除@number_of_questions = params[:number_of_questions]。除了将nil分配给实例变量之外,它什么也没做。

您只需将表单发送到new操作即可。只需在url中指定form_for参数,然后设置参数而不是3。

查看:

<%= form_for :quiz, url: path_to_new_action do |f| %>    <!-- Specify the path! -->
  <%= f.select :quantity_questions, 1..20 %>
  <%= f.submit %>
<% end %>

<强>控制器:

def number_of_questions
end

def new
  @quiz = Quiz.new

  params[:question][:quantity_questions].to_i.times do
    @quiz.questions.build
  end
end