0

在 Rails 3.2 应用程序中,我使用<% title "Title Text" %>.

<title>这将按如下方式传递给标签:

<head>
    <title>AppName | <%= yield (:title) || "Default Title" %></title>
</head>

并呈现如下:

<h1><%= yield(:title) %></h1>

通过以下辅助方法:

def title(page_title, show_title = true)
    content_for(:title) { h(page_title.to_s) }
    @show_title = show_title
end

def show_title?
    @show_title
end

这在开发中按预期工作,并且在大多数情况下在 Heroku 上的生产中工作。

在一些地方,我有更复杂的标题,例如<% title ["Edit ",(@model.name)] %>.

这在开发中按预期工作,并显示Edit Foo Bar.

但是在 Heroku 上,这呈现为["Edit ", "Foo Bar"].

为什么要在 Heroku 上呈现语法?我有一种感觉,这可能与使用方括号定义数组有关,但是在搜索 Heroku 文档和 Google 之后,我没有找到任何有关此的信息。

感谢您提供任何帮助的想法。

4

1 回答 1

2

听起来您在家里使用的是 Ruby 1.8,而 Heroku 使用的是 1.9——Array#to_s两者之间的结果不同。为避免歧义,最好明确说明您希望如何打印数组。例如,如果您希望您的标题助手专门处理数组,这样的事情应该可以工作:

def title (page_title, show_title =true)
    page_title = page_title.join(' ') if page_title.respond_to? :join
    base_title = "AppName"
    @content_for_title = page_title.to_s
    @show_title - show_title
    if @content_for_title.nil?
      base_title
    else
      "#{base_title} | #{@content_for_title}"
    end
end
于 2012-04-11T02:22:16.297 回答