使用包含斜杠(/)的参数进行Rails路由

时间:2010-11-25 02:12:26

标签: ruby-on-rails

我想按如下方式设置路线

  • /url/http://google.comurls控制器和index操作。

我现在routes.rb的内容是:

match "urls/:url" => "urls#index"

路由似乎不起作用,因为在:url

中进行了大幅削减

3 个答案:

答案 0 :(得分:34)

或者你可以使用Route Globbing:

match "urls/*url" => "urls#index"

您可以通过访问控制器中的值 params[:url]

参考: http://guides.rubyonrails.org/routing.html 搜索“Route Globbing”

答案 1 :(得分:18)

您可以执行与

类似的操作
match "urls/:url" => "urls#index", :constraints => {:url => /.*/}
在Rails 2.3中的

可能在Rails 3中工作,允许你匹配:url中的/(虽然,我现在无法测试它。)

答案 2 :(得分:1)

module Entity 
  # create the class instance variable methods when this is included
  def self.included klass
    klass.singleton_class.send(:attr_reader, :rules)
  end

  def foo
    puts self.class.rules
  end
end

class Person
  include Entity

  attr_accessor :id, :name

  @rules = [[:id, :int, :not_null],
            [:name, :string, :not_null]]
end

class Car
  include Entity

  attr_accessor :id, :year

  @rules = [[:id, :string, :not_null],
            [:year, :int, :not_null]]
end