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

Heroku が 1.9 を使用しているのに対し、あなたは自宅で Ruby 1.8 を使用しているように思えます — Array#to_s2 つの間で異なる結果が得られます。あいまいさを避けるために、配列をどのように出力するかを明示することをお勧めします。たとえば、タイトル ヘルパーで配列を特別に処理する場合は、次のようにします。

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 に答える