gee*_*ter 1 routing ruby-on-rails controllers ruby-on-rails-3
我的Rails路由有一个奇怪的问题.我有一个名为Page的控制器和一个名为Page#dashboard的方法
当我尝试访问/ dashboard/1时,页面控制器的仪表板方法永远不会被执行.但令人惊讶的是/pages/dashboard.html.erb呈现得很好.
有人能解释一下为什么吗?
代码详情如下.谢谢
试图访问 - /dashboard/1
的routes.rb
match '/dashboard/:id' => 'page#dashboard'
Run Code Online (Sandbox Code Playgroud)
Page_Controller.rb
class PageController < ApplicationController
before_filter :init
private
def init
puts "init getting executed !!!!!!!!!" #this gets printed on console
end
def dashboard
puts "dashboard getting executed !!!!!!!!!" #this doesnt get printed on console
end
end
Run Code Online (Sandbox Code Playgroud)
viewPage - Pages/dashboard.html.erb
日志如下所示 -
init getting executed !!!!!!!!!
Started GET "/dashboard/8" for 127.0.0.1 at 2012-06-03 00:04:40 +0800
Processing by PageController#dashboard as HTML
Parameters: {"id"=>"8"}
Rendered page/dashboard.html.erb within layouts/page (45.9ms)
Completed 200 OK in 180ms (Views: 133.6ms | ActiveRecord: 3.1ms)
Run Code Online (Sandbox Code Playgroud)
首先,您不必定义操作方法.如果您只想渲染模板,那么只要模板foo存在,rails就会很乐意让您路由到SomeController#foo.
其次,要成为行动的方法必须是公开的.您的仪表板方法是私有的,因此它不会被视为操作,也不会被执行.由于您有dashboard.html.erb模板,因此rails会渲染它.
| 归档时间: |
|
| 查看次数: |
740 次 |
| 最近记录: |