ruby-on-rails Rails布局在操作之间不改变

vmdwslir  于 7个月前  发布在  Ruby
关注(0)|答案(4)|浏览(76)

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

def index
        render layout: 'index_layout'
    end

    # All other actions follow this scheme
    def any_other_action
    end

字符串
索引布局有一段特定的代码来更改样式:

<!-- Index layout -->
    <html id="index_html">
    ...

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


但是,当我在Rails中通过link_to标记从一个窗口切换到另一个窗口时,布局不会被刷新,视图仍然使用前一页中分配的id,例如,如果我从index转到任何其他页面,html标记的id为index_html,反之亦然。(通过按F5键),布局呈现正确。我在Mozilla Firefox和Chrome中进行了测试,为了检查这是否是浏览器特有的问题,但结果是一样的。
当我通过link_to标签导航到任何其他页面并重新加载这个新页面后,我的服务器在请求索引页面时会产生以下输出:

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

js81xvg6

js81xvg61#

我认为最简单的方法来获得你的客户布局是创建一个布局与控制器的名称作为文件夹名称和index.html.erb反映你的行动。

xxe27gdn

xxe27gdn2#

1)

before_action custom_layout, only: :index

def custom_layout
    render 'layouts/index_layout'
end

字符串

2)

layout :layout_by_resource

def layout_by_resource
   if true #just check as you want here. controller/path/actions etc...
     "index_layout"
   else
     "application"
   end
end

zqry0prt

zqry0prt3#

我张贴这期望这将是有帮助的任何人与我提出的问题
问题出在turbolinks gem上。当你用这个gem创建一个链接时,它似乎只会重新加载页面的主体。因此,当通过链接重定向时,html标签不会改变,但当刷新时会改变。我所要做的就是在我的链接标签中添加下一个代码:

<%= link_to about_us_path, data: {turbolinks: false} %>

字符串
因此,布局被完全重绘,并应用所需的更改。
感谢所有人的回答!

fjaof16o

fjaof16o4#

我也遇到过同样的问题,我是这样解决的:

<%= link_to about_us_path, data: {turbo: false} %>

字符串
使用Rails 7.1

相关问题