我想让我的根控制器接受应用程序生成的一个简短的字母数字参数:
mysite.com/5g3fj6
我如何以参数不与其他路线(如mysite.com/signup)冲突的方式实现此目的
与此同时,我希望避免添加中间词“/ i /”,这会使域名和参数更难为用户输入:
mysite.com/i/5g3fj6
答案 0 :(得分:0)
您可以尝试使用路线约束。示例:如果您正在使用设计登录/注册内容,请确保设计相关的声明位于routes.rb文件的顶部:
# config/routes.rb
devise_scope :user do
get 'signup', :to => 'devise/registrations#new'
end
# this will redirect any request matching the expected URL format.
get '/:the_id', constraints: { the_id: /[a-z0-9]{6}/ }, to: 'posts#show'
上面的路线会链接请求,例如' mysite.com/5g3fj6' to action:在PostsController中显示。日志将显示如下内容:
Started GET "/5g3fj6" for 127.0.0.1 at 2014-06-30 00:27:10 +0800
Processing by PostsController#show as HTML
Parameters: {"the_id"=>"5g3fj6"}
您现在可以使用' the_id'里面的表演'做类似" Post.find_by_slug(params [:the_id])"的方法。
希望有所帮助。 :)
干杯!