Rails - 使用带有嵌套路由的link_to发送参数

时间:2018-01-21 08:12:47

标签: ruby-on-rails ruby

我正在尝试通过link_to发送参数,我不知道如何访问它......或者我是否正确地执行此操作。

我的路线设置如下:

resources :coins do
  resources :questions
end

在硬币页面中,每个链接都会创建一个新问题,并且应该包含一个值,ques_num,这是一个从1到5的整数。这个数字对应一个问题编号。所以第一个链接发送:ques_num = 1,第二个发送:ques_num = 2等。我想访问这个号码并将其存储在@ question.ques_num中。我该怎么做?

我正在创建链接并尝试使用以下命令发送参数:

<%= link_to "Submit an answer", new_coin_question_path(@coin.id, :ques_num => 1) , class: "btn btn-default" %>

我看到URL中显示的参数正确(第一个链接生成网址:http://localhost:3000/coins/1/questions/new?ques_num=1

如何从重定向到的new_coin_question_path访问此值?

2 个答案:

答案 0 :(得分:4)

要直接回答这个问题,我相信您正在寻找params[:ques_num]params.fetch(:ques_num)

更一般地说,我建议您考虑构建调试策略。运行时控制台(例如pry)可以极大地帮助您在不确定自己有权访问时获取上下文。

答案 1 :(得分:0)

如果我说得对,那么问题在于你是在渲染视图的方法上传递参数,在那里创建问题的表单是不必要的。您可以以question_num的形式添加隐藏的输入值,并将其传递给控制器​​,方法是创建问题。

注意

如果您希望在自己的视图中使用question_num参数访问您的问题,这是另一个问题,您需要设置自己的路线才能实现。 Rails默认路由使用ID,这意味着当您尝试查看/coins/1/questions/10视图时,您将获得类似:questions#show,其中10是问题ID。