【发布时间】:2011-03-03 21:11:54
【问题描述】:
我正在实现 current_page? 以测试当前控制器和动作是否等于某个值,但是在该控制器/动作组合上它不会返回 true。
- if current_page?(:controller => 'pages', :action => 'main')
# doesn't return true when on that controller/action combination
唯一可行的方法是我使用更详细的方法,如下所示:
- if controller.controller_name == 'pages' && controller.action_name == 'main'
# this works just fine
是我的语法错误还是这里发生了其他事情?有没有更好的方法,比如设置一个 BOOL 或者这是正确的方法?
最终目标是仅在主要目标网页上显示某个标题,而在所有其他页面上显示不同的标题。
编辑:来自rake routes的相关输出:
pages_main GET /pages/main(.:format) {:controller=>"pages", :action=>"main"}
root /(.:format) {:controller=>"pages", :action=>"main"}
另外,这是渲染时的服务器输出:
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)
【问题讨论】:
-
按照惯例,您的操作方法名称不应以大写字母开头。
-
是的,“主要”应该是“主要”。看看这是否有所作为
-
除了约定之外,不幸的是它并没有什么不同。还是谢谢你的建议!
-
请包含
rake routes的输出。 -
@jdl:添加了相关输出(有很多,其他的就不贴了)
标签: ruby-on-rails controller action current-page