質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

441閲覧

Twitterカードのmetaタグをページごとに変化させたい

taishiaaaaa

総合スコア30

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2019/01/25 16:08

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

参考にしているサイト通りにもう一度コードを書いたら実装できました:(
原因は打ち間違えだったようです:(

投稿2019/01/26 09:53

taishiaaaaa

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問