我有一个名为dashboard
的控制器,其方法为foo
。现在我需要一个方法bar
,它在dashboards/foo/bar.html.erb
中有自己的观点 - 我如何在dashboards_controller.rb
中写出来?
结构:
- app
|_ views
|__ dashboard
|___ index.html.erb
|___ edit.html.erb
|___ foo/bar.html.erb
|___ foo/foobar.html.erb
到目前为止我的代码
class WelcomeController < ApplicationController
def index
# do something
end
def edit
# do something
end
def foo
# do something
end
def foo/bar
# doesn't work
end
end
答案 0 :(得分:2)
您可以将任何路径映射到您想要的任何控制器操作,但是您无法使用斜杠控制器操作:它只是一个ruby方法,并且不允许斜杠在方法名称或变量名称中 - 您需要调用该方法,但您可以保留您的路线。
如果这只是一次性的话,你可以为它制作一个自定义路线:
#in config/routes.rb
get '/dashboard/foo/bar', to: 'dashboard#foo_bar'
要呈现特定模板,请在控制器操作中使用render :template
命令。
#in the dashboard controller
def foo_bar
#your code here
render :template => "/dashboard/foo/foobar"
end
(免责声明 - 由于所有foo / bar / foobar动作,我可能会略微混淆,但希望你能得到这个想法)
然而,它看起来就像您正在构建网站的嵌套部分,即一组嵌套的控制器和一个公共路径片段下的视图。这通常见于&#34; / admin /:controller /:action&#34;路由类型,您拥有一整套管理控制器和视图。如果是这种情况,请查看http://guides.rubyonrails.org/routing.html,特别是&#34;控制器命名空间和路由&#34; &安培; &#34;嵌套资源&#34;部分。