我想从推车控制器那里得知我来的:如果我来自' /'或' /搜索'参数是一个系列模型,如果我来自/' 1-9 +'它是一个季节模型,最后是' 1-9 + / 1-9 +'是一个章节模型。
我已经看到URI(request.referer).path
显示了路径,但我不知道如何制作该正则表达式。
有什么简单的方法可以知道它来自哪个视图?我存在问题,因为它们是不同的型号,而且参数是主键,所以我不知道我必须搜索那个键。
答案 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'