Rails URI(request.referer).path regexp

时间:2017-05-23 20:52:56

标签: ruby-on-rails url request

我想从推车控制器那里得知我来的:如果我来自' /'或' /搜索'参数是一个系列模型,如果我来自/' 1-9 +'它是一个季节模型,最后是' 1-9 + / 1-9 +'是一个章节模型。

我已经看到URI(request.referer).path显示了路径,但我不知道如何制作该正则表达式。

有什么简单的方法可以知道它来自哪个视图?我存在问题,因为它们是不同的型号,而且参数是主键,所以我不知道我必须搜索那个键。

2 个答案:

答案 0 :(得分:0)

区分这些请求的更好方法是不使用regexp,而是在routes.rb文件中声明适当的路由

  

得到' /' => '#系列索引'

     

get' / search' => '#系列搜索'

     

get' /:season' => '#季节显示'

     

get' /:season /:chapter' => '#章节显示'

在最后一条路线中,params [:season]和params [:chapter]将根据您的网址设置

答案 1 :(得分:0)

如果在控制器操作中你想知道请求来自哪条路由,最好让rails路由为你处理正则表达式部分,你可以简单地从routes.rb本身添加标识符作为额外参数。

get '/' => 'your_controller#your_action', :type => "Series"
get '/search' => 'your_controller#your_action', :type => "Series"
get '/:season' => 'your_controller#your_action', :type => "Season"
get '/:season/:chapter' => 'your_controller#your_action', :type => "Chapter"

标识符将在您的控制器操作中以params [:type]的形式出现

同样作为一种好习惯,永远不要用变量开始你的路线。始终命名他们。否则他们将开始与任何其他路线匹配。 例如使用get 'some_namespace/:season'代替get '/:season'