Rails: 如何将内容放入页眉

Rails: How to put stuff in header

在我的 Rails 应用程序中,我包含了 OneSignal,它需要将以下 link 放在文档的头部:

<link href='/manifest.json' rel='manifest'>

不幸的是 Rails 我不能把这个 link 放在那里,因为整个布局都在 body 内呈现。

虽然这...

$(document).ready(function(){
    $("head").append("<link href='/manifest.json' rel='manifest'>");
});

似乎在开发模式下有效,在生产模式下无效。

如何将此 link 添加到文档的开头部分?

您可以在 app/views/layouts/application.html.erb 中添加 <link href='/manifest.json' rel='manifest'>

如果您不想在站点范围内进行更改(将脚本添加到站点上的每个页面),您可以选择要放置它的页面并将其添加到 .htmlerb 文件中

<%= content_for :header %>
    <%= javascript_include_tag "script.js" %>
<%= end %>

javascript_include_tag 将允许您将内容从控制器发送到 header,如果 script.js 在您的 app/assets/javascript 目录中,它将被添加到 header。

另一种选择是制作 specific layout 并让需要脚本的页面使用该布局,方法是在控制器中调用它,如下所示:

def users_index
@user= User.find(params[:id])
layout: users_index layout 
end

这将从 app/views/layouts 加载 users_index_layout.html.erb 文件...如果它存在,如果不存在则大声抱怨。