Rails current_page?与controller.controller_name相对

iwa*_*bed 25 action controller ruby-on-rails current-page

我正在实现current_page?一个视图来测试当前控制器和动作是否等于某个值,但是当在该控制器/动作组合上时它不会返回true.

- if current_page?(:controller => 'pages', :action => 'main') 
# doesn't return true when on that controller/action combination
Run Code Online (Sandbox Code Playgroud)

它工作的唯一方法是如果我使用更详细的方法,如下所示:

- if controller.controller_name == 'pages' && controller.action_name == 'main'
# this works just fine
Run Code Online (Sandbox Code Playgroud)

我的语法错了还是在这里发生了其他事情?有没有更好的方法来做到这一点,比如设置BOOL或者这是正确的方法吗?

最终目标是仅在主着陆页上显示某个标题,同时在所有其他页面上显示不同的标题.

编辑:相关输出来自rake routes:

pages_main GET  /pages/main(.:format)  {:controller=>"pages", :action=>"main"}

root   /(.:format)   {:controller=>"pages", :action=>"main"}
Run Code Online (Sandbox Code Playgroud)

此外,这是渲染时的服务器输出:

Started GET "/" for 127.0.0.1 at 2011-03-03 16:54:40 -0500
Processing by PagesController#main as HTML
Rendered pages/main.html.haml within layouts/application (203.8ms)
Run Code Online (Sandbox Code Playgroud)

apn*_*ing 31

current_page?(root_path) 工作良好.

但我不能使它与工作:controller:action

似乎帮助者需要一个字符串,所以:

current_page?(url_for(:controller => 'pages', :action => 'main')) 
Run Code Online (Sandbox Code Playgroud)

工作得很好.

文档奇怪的矛盾.