前提・実現したいこと
Twitterカードのmetaタグをページによって変化させたい。
1.micropost_controllerからデータを取得
2.取得したデータをもとにmetaタグを作成
3.該当ページ以外では固定のmetaタグを入れる
下記のコードで実行するとエラーこそは出ませんが、metaタグのcontentには何も入っていませんでした。
該当ページ以外ではちゃんと固定のmetaタグが入っていました。
controllerからhelperに値を渡す方法が分かりません。
controllerをわざわざ介さずhelperから直接DBをいじれないかも調べましたがそれらしい情報は見つかりませんでした。
関係しそうなページを丸一日、一通り検索しましたが分かりませんでした。
どなたか教えて頂けたら嬉しいです。
サイト1
こちらのサイトが最も求めていたものに近かったので参考にさせてもらっていました。
ページ詳細画面にpageが設定されている場合動くとあったので、同じように該当ページのcontrollerにmicropostを設定しましたが動きませんでした。
該当のソースコード
application.html.erb
application
1<% twitter_card = meta_tag_twitter() %> 2<meta name="twitter:card" content="summary_large_image" /> 3<meta name="twitter:site" content='XXX' /> 4<meta property="og:url" content=<%=twitter_card[:url]%> /> 5<meta property="og:title" content=<%=twitter_card[:title]%> /> 6<meta property="og:description" content=<%=twitter_card[:description]%> /> 7<meta property="og:image" content=<%=twitter_card[:image]%> />
application_helper.rb
helper
1def meta_tag_twitter() 2 twitter_card = {} 3 if (defined? meta_data_twitter) 4 meta_data_twitter 5 else 6 twitter_card[:url] = 'https://sample.com' 7 twitter_card[:title] = 'sample' 8 twitter_card[:description] = 'sample' 9 twitter_card[:image] = 'sample.jpg' 10 end 11 twitter_card 12 end
microposts_controller.rb
controller
1def meta_data_twitter 2 3 @micropost = Micropost.find(params[:id]) 4 5 twitter_card = {} 6 7 twitter_card[:url] = "https://sample.com/#{@micropost}" 8 twitter_card[:title] = "#{@micropost.username}の投稿" 9 twitter_card[:description] = "#{@micropost.content}" 10 twitter_card[:image] = "https://{@micropost.id}.png" 11 12 end 13 end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。