【问题标题】:Rails routes for get request with query params带有查询参数的获取请求的 Rails 路由
【发布时间】:2012-09-21 06:59:45
【问题描述】:

我需要一个路由来接受带有附加:query 参数的请求reports#show,但我不知道如何编写它。在我看来它需要响应这个链接:

= link_to report_path(query: params[:query]) do

config/routes.rb

  resources :reports do
    resources :chapters
    resources :pages
  end

尝试过以下变体:get '/reports/:id/:query', :as => 'reports_query',但我不断得到:

Routing Error

No route matches {:action=>"show", :controller=>"reports", :query=>"europe"}

项目主要是 RESTful 的,但我会在这一点上采用任何可行的方法。感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 routes restful-url


    【解决方案1】:

    您应该使用这样的代码定义查询路径

    # routes.rb
    resources :reports do
      get ':query', to: 'reports#show', on: :member, as: :query
    end
    

    它会生成你可以使用的路径助手

    = link_to 'Query Report', query_report_path(@report, query)
    

    【讨论】:

    • “有效”,看起来很完美(rake routes):query_report GET /reports/:id/:query(.:format) reports#show。虽然我认为我的link_to 助手坏了...= link_to report_path(query: params[:query]) do 给了我No route matches... 错误(上图)。任何想法如何创建该 link_to 并添加包括:query 参数?它必须是一个障碍,这就是让我被束缚的原因......
    • 您只能从您的控制器访问params 哈希(如果需要,然后将其传递到变量中查看)。
    • 是的,这就是我计划在它进入时处理它的方式(并且第一次通过),但我需要通过这个 link_to 标签传递它,但不确定语法?!?
    • 语法很简单,如您所见:link_to 'Link Text', query_report_path(@report, query) - 其中query 是您的查询参数
    • 点赞link_to query_report_path(@report, query) do 'Link Text or other html content'; end
    【解决方案2】:

    我在这里遇到了同样的问题,我在定义路线时使用default 参数解决了它。

    get :twitter_form, defaults: { form: "twitter" }, as: :twitter_form, to: "campaigns#show"

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 2016-11-24
      • 2019-06-27
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多