为什么Heroku呈现方括号语法但在开发中解释?

时间:2012-04-11 02:10:36

标签: ruby-on-rails heroku

在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之后我还没有找到任何关于此的信息。

感谢任何想法提供帮助。

1 个答案:

答案 0 :(得分: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