加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 匹配查询参数的Rails路由

发布时间:2020-12-17 04:24:45 所属栏目:百科 来源:网络整理
导读:Rails路由非常适合匹配URL的RESTful样式’/’分隔位,但我可以匹配map.connect配置中的查询参数.我希望根据’?’之后参数的存在来调用不同的控制器/动作. 我正在尝试这样的事…… map.connect "api/my/path?apple=:applecode",:controller = 'apples_control
Rails路由非常适合匹配URL的RESTful样式’/’分隔位,但我可以匹配map.connect配置中的查询参数.我希望根据’?’之后参数的存在来调用不同的控制器/动作.

我正在尝试这样的事……

map.connect "api/my/path?apple=:applecode",:controller => 'apples_controller',:action => 'my_action'
map.connect "api/my/path?banana=:bananacode",:controller => 'bananas_controller',:action => 'my_action'

出于路由目的,我不关心参数的值,只要它在params散列中可用于控制器

解决方法

以下解决方案基于“Rails Routing from the Outside In”rails指南(http://guides.rubyonrails.org/routing.html)中的“高级约束”部分.

在你的config / routes.rb文件中,包含一个识别器类有匹配吗?方法,例如:

class FruitRecognizer
  def initialize(fruit_type)
    @fruit_type = fruit_type.to_sym
  end

  def matches?(request)
    request.params.has_key?(@fruit_type)
  end
end

然后使用类中的对象作为路由约束,如:

map.connect "api/my/path",:contraints => FruitRecognizer.new(:apple),:action => 'my_action'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读