问题是通过帮助程序传递查询参数_path。
示例我知道如何传递普通参数
edit_survey_path(@poll_module)
生成
/survey/12 because of route /survey/:id
哪个是正确的,可以编辑
但是,我想为new_survey_path生成以下网址
/survey/new?pollModule=lgpd
那么我应该怎么写
new_survey_path(????)
在视图的控制器上,我有@poll_module = 'lgpd'
然后我尝试了
new_survey_path(@poll_module)
new_survey_path({@poll_module})
new_survey_path({pollModule: @poll_module})
new_survey_path({:pollModule => @poll_module)
new_survey_path(:pollModule, {pollModule: @poll_module})
是的,有些很疯狂,但这是我在 forun 上发现的东西
new_survey_path(@poll_module) generates
http://rubyenv:3000/surveys/new.lgpd?
这是因为编辑的路由是 #routes new_survey GET/surveys/new(.:format( 所以是 get 在格式上
我想要一个查询参数 /surveys/new?pollModule=lgpd
因为在新的调查中,我需要在回答调查之前搜索严格的问题,而这个问题取决于模块
通常你传递一个查询参数,就像这样new_survey_path({key: "value1", key2: "value2"})
。因此,您报告尝试过的一个版本应该可以正常工作。这就是为什么我认为它可能会干扰您的路线。您能否尝试隔离问题并简单地将以下内容添加到您的项目中:
# routes.rb
resources :surveys, only: [:new]
# app/controllers/surveys_controller.rb
class SurveysController < ApplicationController
def new
@pollModule = params[:pollModule]
end
end
<!-- app/views/surveys/new.html.erb -->
<h1>New Survey</h1>
<p>poll module inserted as query param: <%= @pollModule %></p>
<%= link_to "testLink", new_survey_path(pollModule: "randomInput") %>
当您单击"测试链接"时,它应该将您重定向到 URL localhost:3000/surveys/new?pollModule=randomInput
。
还要确保路由位于 routes.rb 文件的顶部,因为有时排序会把事情搞砸。希望有帮助,让我知道它是否有效。
问题不在于_path助手,而在于我在视图上使用的组件
如果使用button_to,则它已经具有参数参数
{poll_module: 'teste123'} %>文档参考 ->https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to
或者如果我使用link_to它默认获取查询
文档 -参考->https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to