在Rails 3中使用current_page时“没有路由匹配”

时间:2011-04-11 21:47:08

标签: ruby-on-rails ruby ruby-on-rails-3 current-page

在使用current_page时,有没有人经历过神秘的路线无法察觉?在Rails 3?即使完全生成的脚手架配有路线,视图和控制器,我也会收到“无路线匹配”错误。

以下是代码:

if current_page?(:controller => 'users', :action => "show")

如果我向routes.rb添加“match”命令,它可以正常工作,但是如果资源已经创建,为什么还需要这样做呢?我错过了什么?

3 个答案:

答案 0 :(得分:20)

如果您只想测试当前控制器,可以执行以下操作:

if params[:controller] == 'users'

类似地,如果您使用的是命名空间控制器,则可以使用斜杠将命名空间与控制器名称分开,例如:

if params[:controller] == 'advertising/users'

答案 1 :(得分:18)

您错过了此助手的id参数:

current_page?(:controller => "users", :action => "show", :id => "1")

它希望你通过一个完整的路线。如果您不想要这个并且只想在控制器和动作上匹配,那么我建议您自己编码。

答案 2 :(得分:0)

根据您的路线,要查找没有 ID 的通用 show 操作,您可以查找例如!current_page?(:controller => "users", :action => "index")