LoginSignup
5
7

More than 5 years have passed since last update.

Ruby on Railsで動的なツイートボタンを作成

Posted at

ユーザーが閲覧しているサイトについてTwitterでツイートを行うことを促すツイートボタン。

その内容をModelの値や条件分岐によって異なる値で柔軟に設定ができたら便利だなーと思い、Railsで作成しているWebサービスに組み込んでみました。

実装例

コントローラー

...(省略)
@tweet_url = URI.encode(
  "http://twitter.com/intent/tweet?original_referer=" +
  request.url +
  "&url=" +
  request.url +
  "&text=" +
  "記事『" + @article.title + "』を閲覧しています。" 
)
...(省略)

ボタンを実装したいページのコントローラーに対し、上記のコードを追加し、ツイートボタン用のURLを設定します。
テキスト処理の仕方がちょっと不細工になってしまいましたので、各自お好みでいい感じに整えてください。
@tweet_urlに対して適切なURLが入っていさえいればOKです。

一応URLに設定しているパラメータの簡単な解説↓

  • original_referer:ツイート後に表示される元に戻るリンクに使用されます
  • url:ツイートの末尾にここに設定されたURLが追記されます
  • text:ツイート本文です

他にもユーザー名を関連付けるviaやハッシュタグを付与するhashtagsなどあります。
リンクURLの詳細についてはTwitterのWeb Intentsについて調べてみてください。
基本的にurltextさえ設定しておけば、基本的な目的は達成できます。

またツイート本文には日本語を使用することが多いと思いますので、URL全体にエンコード処理を加えています(URI.encode)
これは無くても何とかなったけど一応加えておきました。

ビュー

...(省略)
<%= link_to @tweet_url,:onclick=>"window.open(this.href,'hoge', 'height=400, width=600');return false;" do%>
  この記事についてツイートする
<% end %>
...(省略)

あとはlink_toでツイートリンクを作成するだけです。
window.openで新規ウィンドウで開くようにしています。同ページでリンクさせる場合は特に設定不要です。
オプションに:target=>["_blank"] を追加すれば別タブで開くように設定できます。
お好みでボタンの装飾など行ってください。

まとめ

以上でサクッとツイートでリンク共有できるリンクが作成できました。
ご自身のWebサービスに追加して、拡散を狙ってみてはいかがでしょうか。
閲覧いただき、ありがとうございました。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7