如何将查询参数放在_path rails_helper

时间:2019-07-18 19:06:14

标签: ruby-on-rails ruby path routes ruby-on-rails-5

问题是要通过_path传递查询参数。

示例我知道如何传递普通参数

edit_survey_path(@poll_module)

生成

 /survey/12 because of route /survey/:id

哪个是正确的并且可以编辑

但是,我想为new_survey_path生成以下URL

/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})

是的,有些人疯了,但这是我在论坛上发现的东西

 new_survey_path(@poll_module) generates 

 http://rubyenv:3000/surveys/new.lgpd?

那是因为编辑路径是     #routes     new_survey GET /surveys/new(.:format)如此格式

我想要一个查询参数     / surveys / new?pollModule = lgpd

因为在新调查中,我需要在回答调查之前搜索严格的问题,而这个问题取决于模块

2 个答案:

答案 0 :(得分:0)

问题不是_path帮助器,而是我在视图上使用的组件

如果您使用button_to,它已经具有用于参数的参数

  {poll_module:'teste123'}%>

文档参考-> https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to

或者如果我使用link_to,则默认情况下获取查询

doc -ref-> https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

答案 1 :(得分:0)

通常,您会传递一个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")  %>

当您单击“ testLink”时,它应将您重定向到URL localhost:3000/surveys/new?pollModule=randomInput

还请确保该路由位于routes.rb文件的顶部,因为有时排序是一件麻烦事。希望能对您有所帮助,让我知道它是否有效。