Rails更改默认布局和视图路径

时间:2015-09-16 19:46:16

标签: ruby-on-rails ruby-on-rails-4

我无法做到

 render :action => '/apps/apptype/theme/content/index',
        :layout => '/apps/apptype/theme/layout'

我如何添加新的布局和行动路径?

3 个答案:

答案 0 :(得分:1)

我不确定您正在尝试什么,但您可以指定特定操作的布局,将索引操作修改为:

这使用布局视图/布局的默认文件夹

def index 
    render(:layout => "your-layout-name")
end

如果您只想在该路径中渲染模板,可以使用:template而不是:layout

def index
     render(:template => "/apps/apptype/theme/layout/your-layout-name")
end

答案 1 :(得分:0)

我通过将模板路径设置为html并将布局设置为布局来解决问题

render (:template  => '/apps/apptype/theme/content/index',
        :layout => '/apps/apptype/theme/layout')

答案 2 :(得分:0)

我找了几个小时的解决方案没有什么帮助,直到我找到了。对我来说,它在我覆盖控制器中的抽象方法后起作用。最初的抽象方法是:

def _normalize_layout(value)   value.is_a?(String) && value !~ /\blayouts/ ? "layouts/#{value}" : value end

只需在控制器中添加这样的方法:

def _normalize_layout(value)
value =~ /yourpath/ ? value : "layouts/#{value}"
end

我只使用' / _ pages /'这样的路径对其进行了测试。在此之后,我可以做到:

layout '/_pages/example/test/resources/views/_layout' 

它有效!

不要问我改变后的方法是如何运作的,我不是这方面的专业人士。但如果有人能解释,我将不胜感激。

来源:https://www.garbageburrito.com/blog/entry/3156653/putting-your-layouts-in-a-non-layouts-directory-in-rails