ruby-on-rails – 基于QueryString设置Rails路由

我已经看到类似的问题,但不是我正在寻找…
忘记这一点的智慧,这可以做到吗?
/object/update/123?o=section    # ==> route to SectionController#update
/object/update/456?o=question   # ==> route to QuestionController#update

如果是这样,怎么办?

解决方法

假设您正在使用Rails 3,您可以使用“高级约束”(详见 http://guides.rubyonrails.org/routing.html#advanced-constraints).

以下是如何解决你的例子:

module SectionConstraint
  extend self

  def matches?(request)
    request.query_parameters["o"] == "section"
  end
end

module QuestionConstraint
  extend self

  def matches?(request)
    request.query_parameters["o"] == "question"
  end
end

Rails.application.routes.draw do
  match "/object/update/:id" => "section#update",:constraints => SectionConstraint
  match "/object/update/:id" => "question#update",:constraints => QuestionConstraint
end

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...