【问题标题】:How to update a rails value using ajax如何使用ajax更新rails值
【发布时间】:2015-11-26 17:39:28
【问题描述】:

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

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

我按照 Ryan Bates RailsCasts:#197 Nested Model Form Part 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

我这样做只是为了学习新东西。

【问题讨论】:

  • 如果他们被带到一个新页面,那么 Ajax 有什么用?
  • 是的,你是对的。我最初想在测验页面上创建表单数量。

标签: jquery ruby-on-rails ajax


【解决方案1】:

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

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

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

您只需将表单发送到new 操作即可。只需在 form_for 中指定 url 参数,然后设置参数而不是 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2017-04-18
    • 2014-11-29
    • 1970-01-01
    • 2012-11-17
    • 2014-11-28
    • 2012-08-20
    相关资源
    最近更新 更多