我在问一个问题,看看我是如何实现一些东西的,是否可以改进,或者看看是否有一个标准来解决类似的问题。我对rails框架还不太熟悉,需要澄清一下。
在application.html.erb布局中,我在页面顶部添加了一个标题栏。当我浏览页面时,我希望标题栏中的文本更改为页面名称现在,我想将标题栏添加到应用程序布局中的原因是因为所有内容都可以共享,所以如果需要更改的只是标题,那么将其放在控制器视图中似乎很愚蠢以下是application.html.erb的摘录:

<h2 class="header-title"><%= $title %></h2>

为了解决这个问题,我创建了一个全局变量$title,我在不同的控制器中进行了更改如下所示:
class JobsController < ApplicationController
   $title = "Jobs"

class PagesController < ApplicationController
   $title = "Dashboard"

我觉得创建一个全局变量是愚蠢的,这可以用不同的方式来做吗?
提前感谢您的任何见解。

最佳答案

考虑到标题在很大程度上是视图特定的责任,我倾向于保留在视图中您可以通过生成一个块来实现这一点,该块稍后将在模板文件中定义content_for
应用程序.html.erb

<h2 class="header-title"><%= yield(:title) %></h2>

myaction.html.erb
<% content_for(:title) { 'My Custom Title' } %>

或者,根据评论-content_for :title, 'My Custom Title'
我喜欢的另一个选择是使用应用程序助手来管理行为。
应用程序助手.rb
def title
  yield(:title) || 'My Default Title'
end

应用程序.html.erb
<h2 class="header-title"><%= title %></h2>

更好的方法是,使用internationalisation并将所有标题存储在其中。

关于ruby-on-rails - 应用程序布局文件中的 Controller 相关标题-Ruby on Rails,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41401575/

10-16 21:43