Ruby on rails Rails 3-在子文件夹中查看

Ruby on rails Rails 3-在子文件夹中查看,ruby-on-rails,Ruby On Rails,我有一个名为dashboard的控制器,它有一个方法foo。现在我需要一个方法bar,该方法的视图位于dashboards/foo/bar.html.erb——如何在我的dashboards\u controller.rb中编写该方法 结构: - app |_ views |__ dashboard |___ index.html.erb |___ edit.html.erb |___ foo/bar.html.erb |___ foo/foobar.html.erb 到目前为止我的代码 cl

我有一个名为
dashboard
的控制器,它有一个方法
foo
。现在我需要一个方法
bar
,该方法的视图位于
dashboards/foo/bar.html.erb
——如何在我的
dashboards\u 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
class WelcomeController
您可以将任何路由映射到您想要的任何控制器操作,但控制器操作中不能有斜杠:它只是一个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操作,我可能把事情弄混了,但希望你能理解)


但是,看起来您正在构建网站的嵌套部分,即在公共路径片段下的一组嵌套控制器和视图。这通常见于“/admin/:controller/:action”类型的路由,其中有一整套管理控制器和视图。如果是这种情况,那么请看一看,特别是“控制器名称空间和路由”和“嵌套资源”部分。

谢谢,我确实错过了树的森林-甚至没有想到这里的路由。。。