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

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

这是代码:

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

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

你错过了这个助手的id参数:

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

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

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

 if params[:controller] == 'users' 

同样,如果您使用的是命名空间控制器,则只需使用斜杠将命名空间与控制器名称分开,例如:

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