当前位置:  开发笔记 > 编程语言 > 正文

Rails:如何更改页面标题?

如何解决《Rails:如何更改页面标题?》经验,为你挑选了6个好方法。

在不使用插件的情况下为Rails应用程序中的页面创建自定义标题的最佳方法是什么?



1> Christoph Sc..:

在您的视图中执行以下操作:

<% content_for :title, "Title for specific page" %>

<%= content_for(:title, "Title for specific page") %>

以下是布局文件:


  <%= yield(:title) %>
  


  
  

<%= yield(:title) %>

也可以将content_foryield(:title)语句封装在辅助方法中(正如其他人已经建议的那样).但是,在这种简单的情况下,我喜欢将必要的代码直接放入特定的视图中,而无需自定义帮助程序.


我将这个答案与下面的答案合并为每个页面创建一个"默认标题":` <%=(yield(:title)+" - "除非yield(:title).blank?).to_s +"这总是在布局中显示"%> </ title>"和`<%content_for:title,"视图中的条件标题"%>`. <br><br><b>2> opsb..:</b><hr><p>这是我喜欢使用的简单选项</p> <p>在你的布局中</p> <pre class="brush:bash;"><head> <title><%= @title %>

在页面模板的顶部(第一行)

<% @title="Home" %>

由于解析布局和页面模板的方式,因此在呈现布局之前评估@ title ="Home".


值得注意的是,这不适用于rails视图缓存.在rails 3中,content_for非常智能,可以正常使用缓存(请参阅选定的答案).
不应该在控制器内设置变量?
@SajjadMerchant一般我同意,是的变量应该在控制器中设置.在这种情况下,模板感觉更合适,因为您指定了特定于页面外观的属性.控制器动作也可以由两个不同的视图使用(不是经常发生这种情况,我用它来说明标题与特定模板的紧密联系).

3> Aupajo..:

最佳做法是使用content_for.

首先,添加几个辅助方法(即粘贴在app/helpers/application_helper.rb中):

def page_title(separator = " – ")
  [content_for(:title), 'My Cool Site'].compact.join(separator)
end

def page_heading(title)
  content_for(:title){ title }
  content_tag(:h1, title)
end

然后在布局视图中,您可以简单地使用:

<%= page_title %>

......并且在视图中:

<%= page_heading "Awesome" %>

这种方式的优点是允许你在标题的h1标签贴在哪里,并保持你的控制器很好,没有讨厌的@title变量.


如何设置`@ content_for_title`的值?

4> boulder_ruby..:

@opsb的改进和更完整的@FouZ形式:

application.html.erb:

<%= @title || "Default Page Title" %>

在视图erb文件或其控制器中:

<% @title = "Unique Page Title" %>



5> Avdi..:

请查看content_for:http://railscasts.com/episodes/8



6> Alan..:

如果没有关于您试图满足的用例或要求的进一步细节,我可以考虑几种选择:

1)在一个布局页面中切换标题并使用存储的辅助方法 application_helper.rb

<%= custom_title %>

这种方法将为每个布局页面提供一个唯一的标题.

2)Railscasts建议使用partial来加载HEAD标签之间显示的内容

3)如果需要在加载事件后更改标题,请使用javascript/ajax调用来操作DOM.

也许你真的不想改变title元素标记的内容.也许您确实需要某种面包屑,以便您的用户始终知道他们相对于您网站的导航层次结构的位置.虽然我对goldberg插件的处理方式做得很好,但我确信还有其他方法可以实现相同的功能.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有