Html Rails布局在操作之间不更改
我正在编写一个Rails应用程序。我想在索引页面的整个HTML标记中使用特定的样式,但其余页面应遵循应用程序布局。因此,在我的控制器中,我有:Html Rails布局在操作之间不更改,html,ruby-on-rails,caching,layout,Html,Ruby On Rails,Caching,Layout,我正在编写一个Rails应用程序。我想在索引页面的整个HTML标记中使用特定的样式,但其余页面应遵循应用程序布局。因此,在我的控制器中,我有: def index render layout: 'index_layout' end # All other actions follow this scheme def any_other_action end 索引布局具有更改样式的特定代码段: <!-- Index layo
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>
...
有人能告诉我什么可能会失败吗?我的直觉是关于缓存的,但我找不到任何能帮助我的答案。我的Ruby版本是2.5.1,rails版本是5.1.6。我认为获得客户布局的最简单方法是创建一个布局,其中控制器的名称为folder name,index.html.erb,以反映您的操作。1) 2)
我希望这将有助于任何人与我提出的问题 问题是
turbolinks
gem。当您使用此gem创建链接时,它似乎只重新加载页面的主体。由于这个原因,html标记在通过链接重定向时没有更改,但在刷新时会更改。我所要做的就是在我的链接标签中添加下一个代码:
<%= link_to about_us_path, data: {turbolinks: false} %>
因此,布局将完全重新绘制,并应用所需的更改
谢谢大家的回答 也许这会有帮助:谢谢你的回答,@iGian,但问题不在于渲染错误的布局,正确的布局正在被渲染(正如服务器的输出所说),但它没有被重新绘制,或者重载编辑不是一个不同的控制器。这只是控制器中的一个特定操作。我已经创建了两个布局,并且(根据服务器)它们得到了正确的服务。但是,当我使用
link\u导航到标记时,整个布局没有被重新绘制,但是当我刷新页面时,我猜它被完全重新绘制,并且行为是预期的
before_action custom_layout, only: :index
def custom_layout
render 'layouts/index_layout'
end
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
<%= link_to about_us_path, data: {turbolinks: false} %>