不具合のある環境は、rails5のproduction環境です。開発環境はmacです。
schema.orgの構造化データ対応がうまくいきません。
app/helpers/application_helper.rb
にて以下のように実装しており、
def jsonld_script_tag jsonld = controller.render_to_string(formats: :jsonld) content_tag :script, raw(jsonld), type: Mime[:jsonld].to_s rescue ActionView::ActionViewError => e logger.error e.message nil ensure # render_to_string のバグ回避 https://github.com/rails/rails/issues/14173 lookup_context.rendered_format = nil end
view側で
= jsonld_script_tag
のように呼び出しています。
現状、development環境では、
<script type="application/ld+json">{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"/","name":"HOME"}},{"@type":"ListItem","position":2,"item":{"@id":"/sample","name":"sample"}}]}</script>
のように綺麗に出力されており、googleの構造化データのテストツールでも正常に認識される出力が得られております。
しかしproduction環境では、
<script type="application/ld+json"><script type="application/ld+json">{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"/","name":"HOME"}},{"@type":"ListItem","position":2,"item":{"@id":"/pickup_and_return","name":"Pickup and Return"}}]}</script>
このように、<script type="application/ld+json">
開始タグが二重で出力されてしまい(閉じタグは一つ)、テストツールでも正常に認識されません。
どなたか、何か原因でわかることございましたらご教授をお願いいたします。
あなたの回答
tips
プレビュー