在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之后我还没有找到任何关于此的信息。
感谢任何想法提供帮助。
答案 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