从子目录渲染局部视图

4

我的views目录结构如下:

视图

  • 按域名
    • 域名1
      • user_mailer
        • 导航
          • _menu.html.haml
        • 申请.html.haml
        • 欢迎.html.haml

有没有一种方法可以从apply.html.haml中渲染部分视图而不指定完整路径? 我在其他地方读到过可以这样做:render :partial => "./nav/menu",但对我没有用。


你尝试过使用_render :partial => "nav/menu"_,去掉第一个斜杠和点吗? - robzdc
1
是的,我也尝试过那个方法,但没有成功。在寻找答案无果后,我只好使用完整路径。 - thedevlpr
3个回答

8
在render方法中使用完整路径。
例如,如果您有以下目录结构...
app | views |--» landing |----» main_template.html.erb |----» desktop |------» _home.html.erb |----» mobile |------» _home.html.erb
...并且main_template调用render被找到在app/views/landing下,则对render的调用看起来像这样... render partial: 'landing/desktop/home' render partial: 'landing/mobile/home'

3
您可以在控制器中使用append_view_path函数。我通常这样使用它:
class DemoController < SiteController
.
.
    before_filter do
        append_view_path Rails.root.join("domain/domain1/user_mailer")
    end 
...

当然,这只适用于您在这些目录中具有不同的视图/局部名称。

3
我认为目前基于这些 Github 讨论串,这是不可能的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接