Rails 3 - 在子文件夹中查看

时间:2014-04-25 08:45:15

标签: ruby-on-rails

我有一个名为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

1 个答案:

答案 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;部分。