我正在尝试学习铁轨和破坏东西:)
我想解决两个问题。我想创建一个允许用户选择问题数量的下拉菜单,然后我想单独查看这些问题(通过按下一个和上一个)来填写这些问题及其答案。
我跟随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
我只是这样做才能学到新东西。
答案 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