Rails routes matching query parameters

后端 未结 2 616
野趣味
野趣味 2021-01-12 09:21

Rails routes are great for matching RESTful style \'/\' separated bits of a URL, but can I match query parameters in a map.connect config. I wa

相关标签:
2条回答
  • 2021-01-12 09:31

    The following solution is based on the "Advanced Constraints" section of the "Rails Routing from the Outside In" rails guide (http://guides.rubyonrails.org/routing.html).

    In your config/routes.rb file, include a recognizer class have a matches? method, e.g.:

    class FruitRecognizer
      def initialize(fruit_type)
        @fruit_type = fruit_type.to_sym
      end
    
      def matches?(request)
        request.params.has_key?(@fruit_type)
      end
    end
    

    Then use objects from the class as routing constraints, as in:

    map.connect "api/my/path", :contraints => FruitRecognizer.new(:apple), :controller => 'apples_controller', :action => 'my_action'
    
    0 讨论(0)
  • Unless there is a concrete reason why you can't change this, why not just make it restful?

    map.connect "api/my/path/bananas/:id, :controller => "bananas_controller", :action => "my_action"

    If you have many parameters, why not use a POST or a PUT so that your parameters don't need to be exposed by the url?

    0 讨论(0)
提交回复
热议问题