前提・実現したいこと
こんにちは。初めての投稿です。
プログラミング初心者としてとある企業でwebエンジニアをしております。
今回はschema.orgの対応を依頼されました。
こちらの開発ではRubyを使っております。また、htmlファイルはslimで記述しています。
(用語含め初心者のため日本語の変なところがあればご指摘お願い致します。)
発生している問題・エラーメッセージ(JSON-LD)
Slim::Parser::SyntaxError in XXXs#index Showing /Users/(略)/app/views/XXXs/_XXX_item.html.slim where line #XXX raised: Unknown line indicator
該当のソースコード(JSON-LD)
... script type="application/ld+json" { "@context": "http://schema.org", "@type": "Hoge", ... }
試したこと1(JSON-LD)
slimでこう書いたらダメなんだな、というのしか分からなかったため「slim schema.org 実装」でかなり調べましたが、特に良い情報は見つかりませんでした。
JSON-LDとRails
こちらのamatsuda/jbとあるものがすごく参考になりそうなのですが、url先にあるGitHubだとviewsフォルダ内にはshow.jsonld.jbしかなく、普通のshow.htmlと並べて置けばいいのか、特別な宣言が必要なのかわかりませんでした。(あと、どう「できているか」確認すれば良いか分からない)
試したこと2(JSON-LD)
【検索エンジンにあなたのページの「情報」を伝える】リッチスニペット対策にもなる「構造化マークアップ」を実装しよう!
こちらに記載されているテストコードをgoogleの構造化データテストツールで検証してみました。
↓↓URL先にある検証画像↓↓
↓↓URL先にあるテストコードをコピー&ペーストし、自ら検証した結果↓↓
もしかして何か環境が整っていないのでしょうか。
発生している問題・エラーメッセージ(Microdata)
NameError in XXXs#index
Showing /Users/(略)/app/views/XXXs/_XXX_item.html.slim where line #XXX raised:
undefined local variable or method `feature' for #<#Class:0x007f9da8319c58:0x007f9da82eae80>
該当のソースコード(Microdata)
div class="XXX-inner #{YYY}" itemscope itemtype="http://schema.org/Hoge" #itemscope~を追加時起きる .XXX-header - if XXX.index_image_url = link_to XXX_path(XXX), class: 'XXXItem-imageWrapper' do .XXXItem-image.lazyload data-bg="#{XXX.index_image_url}" .XXXItem-txt .XXXItem-labels ... - XXX.XXX_features.map(&:feature).each do |feature| = link_to search_XXXs_path_by_conditions(feature: feature, AAA: XXX.AAA), class: 'XXXItem-label is-feature' do = "#{feature.name}" #error箇所 p.XXXItem-YYY = link_to XXX.YYY.ZZZ, search_XXXs_path_by_conditions(AAA: XXX.AAA, YYY: XXX.YYY) ...
試したこと(Microdata)
そんなわけないだろ、と思いつつもクラスと同時に書いたから起きたエラーと想定し、タグを入れ子にして書いてもダメでした。
あとはなぜ起きたのか想定できず、お手上げ状態です。
ちなみにエラー発生時のコンソール上ではXXXは問題なく引っ張ってこれている上に、featureに関する処理の上部省略部分では全く同じ引き出し方で4つほど情報を引っ張りだしています。
itemscope itemtype="http://schema.org/Hoge"を足すだけでネームエラーが起きます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。