首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails布局在不同操作之间不变

Rails布局在不同操作之间不变
EN

Stack Overflow用户
提问于 2018-06-10 00:53:39
回答 2查看 101关注 0票数 0

我正在编写一个Rails应用程序。我想在索引页面的整个HTML标记中使用特定的样式,但其余页面应该遵循应用程序布局。因此,在我的控制器中,我有:

代码语言:javascript
复制
    def index
        render layout: 'index_layout'
    end

    # All other actions follow this scheme
    def any_other_action
    end

索引布局有一段特定的代码,用于更改样式:

代码语言:javascript
复制
    <!-- Index layout -->
    <html id="index_html">
    ...

    <!-- Application layout (goes normally) -->
    <html>
    ...

但是,当我通过Rails中的link_to标记从一个窗口切换到另一个窗口时,布局不会刷新,视图仍然使用前一页中分配的id,例如,如果我从索引转到任何其他页面,则html标记的id为index_html,反之亦然。但是,如果我执行完全刷新(通过按F5键),布局将正确呈现。我在Mozilla Firefox和Chrome上进行了测试,以检查这是否是浏览器特有的问题,但结果是一样的。

在我通过link_to标签导航到任何其他页面,然后重新加载这个新页面后,我的服务器在我请求索引页面时生成以下输出:

代码语言:javascript
复制
    Processing by HomeController#index as HTML
     Rendering home/index.html.haml within layouts/index_layout
     Rendered home/index.html.haml within layouts/index_layout (9.9ms)
     Rendered layouts/_navbar.html.haml (13.6ms)
    Completed 200 OK in 1254ms (Views: 1201.9ms | ActiveRecord: 0.0ms)


    # Navigation with link_to tag, the index_html id is still appearing

    Started GET "/community" for 127.0.0.1 at 2018-06-09 11:45:58-0500
    Processing by HomeController#community as HTML
     Rendering home/community.html.haml within layouts/application
     Rendered home/_community_members_panel.html.haml (6.1ms)
     Rendered home/_community_companies_panel.html.haml (8.1ms)
     Rendered home/community.html.haml within layouts/application (41.5ms)
     Rendered layouts/_navbar.html.haml (10.6ms)
    Completed 200 OK in 110ms (Views: 101.0ms | ActiveRecord: 0.0ms)


    # Full refresh of the page with F5 key, the index_html id doesn't appear, as it should.

    Started GET "/community" for 127.0.0.1 at 2018-06-09 11:46:49 -0500
    Processing by HomeController#community as HTML
     Rendering home/community.html.haml within layouts/application
     Rendered home/_community_members_panel.html.haml (5.6ms)
     Rendered home/_community_companies_panel.html.haml (6.6ms)
     Rendered home/community.html.haml within layouts/application (19.4ms)
     Rendered layouts/_navbar.html.haml (8.4ms)
    Completed 200 OK in 74ms (Views: 72.7ms | ActiveRecord: 0.0ms)

谁能给我一些提示,说明可能会失败的原因?我的直觉是关于缓存的,但我找不到任何可以帮助我的答案。我的Ruby版本是2.5.1,我的rails版本是5.1.6

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-10 20:59:20

我发了这篇文章,希望这对任何有我提出的问题的人都有帮助

问题出在turbolinks gem上。似乎当您使用这个gem创建一个链接时,它只重新加载页面的正文。出于这个原因,html标签在通过链接重定向时不会改变,但在刷新时会改变。我所要做的就是在我的链接标签中添加下一段代码:

代码语言:javascript
复制
<%= link_to about_us_path, data: {turbolinks: false} %>

因此,布局被完全重新绘制,并应用所需的更改。

感谢所有人的回答!

票数 0
EN

Stack Overflow用户

发布于 2018-06-10 01:06:08

我认为获取Ur客户布局的最简单方法是创建一个布局,将控制器的名称作为文件夹名称,并使用index.html.erb来反映Ur操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50776539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档