きっかけ
RoRでjQueryMobileを使ったモバイルサイトを作っていたが、(参考ページ:http://ruby-rails.hatenadiary.com/entry/20140805/1407200400 )Twitter認証をするときに認証時のページを読み込ませようとすると、エラーとなって読み込まれない。
試しにjQueryMobileを利用しないでみると、ちゃんと読み込まれる。なぜだ!?
検索
『jQueryMobile Twitter認証』あたりのキーワードでググっても解決方法が出てこない。
そういえばjQueryMobileを使うとリンクが特殊な動作をするような気が、という記憶の片隅に引っかかっていた情報で試しに検索してみる。『jQueryMobile リンク』でググるとビンゴ!
http://www.buildinsider.net/web/jquerymobileref/05
が引っかかった。
詳しくはリンク先を読んでもらうのが一番だが、同一ドメインに対してリンクするときは自動的にAjax式のリンクになるとのこと。それがどうやら原因らしい。
Ajaxを切るには
上記ページにAjaxを切るための4つの方法が紹介されていたが、今回は同一ドメイン同一アプリ内のページ遷移のため、4番目の方法を採用。aタグにdata-ajax="false"
を設定する。
link_toを使ってこれを設定するには、
<%= link_to "認証", "/auth/twitter", data: {ajax: "false"} %>
でOK。
できた!
これで無事にjQueryMobileを使ったままTwitter認証ができるようになりました。