3

ビューのタイトルセレクターで使用するために2つの文字列を連結する、railsチュートリアルのヘルパーメソッドを使用しています。文字列にアポストロフィがない限り、完全に正常に機能します。

:group_nameにアポストロフィが含まれている場合、次のようになります。

<title>The website | O&amp;#x27;Malley Brothers</title>

メソッドは次のとおりです:app / helpers / application_helper.rb

module ApplicationHelper

  def full_title(page_title)
    base_title = "Chicago Improv Festival"
    if page_title.empty?
      base_title
    else
      "#{base_title} | #{page_title}"
    end
  end
end

レイアウトビューでの使用方法は次のとおりです。app / views / layouts / application.html.erb:

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

:titleが別のビューファイルで設定されている場所は次のとおりです:app / views / subjects / show.html.erb

<% provide(:title, @submission.group_name) %>
4

2 に答える 2

9

.html_safeアポストロフィがエスケープされないように追加する必要があります。

"#{base_title} | #{page_title}".html_safe
于 2012-10-24T15:34:47.043 に答える
4

.html_safeウィリーニリーと呼ぶのは悪い考えです。あなたが完全に制御できて、攻撃にさらされていない限りbase_titlepage_titleどのような種類の攻撃が<title></title>タグを悪用できるかはわかりませんが。

私も同じ問題を抱えていました。解決策は、代わりに文字列補間を使用しないことでした。

base_title + ' | ' + page_title
于 2015-11-16T09:47:37.997 に答える