tank_engineはiPhone向けサイト作成用のRailsプラギン。このプラギン敷居高すぎ。まずドキュメントがない。紹介しているサイトもREADMEの事しか書いてない。READMEには、iPhone判別をしてその時は.iphone.erbでレンダリングしますよ、サブドメインを理解してiphone.hogehoge.comでiPhone用のページを開きますよ、あとHelper準備してますよ、とだけ書いてある。
そのHelperのドキュメントがない。ネット上に解説メージもない。ググってみたらMOONなんとかさんが、”iPhone向けWebサイトを作る方にもお勧めのソフトウェアだ。”とか書いてあって、READMEだけでよくここまで書けるなと思いながらも、コードを読む。
Helperは基本的にゴリゴリタグを足していくだけの物。そのタグと付いてくるJSとCSSで見た目がiPhoneのシステム設定とよく似た感じになる。 ただそのタグが非常に奇妙。iUIの流れを組んでいるみたい。
はまったのが、toggleとbutton_from_hash
toggleは

こんな感じのスイッチを作ってくれる。かっこええやんと思って使ってみると、まず、form_forの中でしか使えない。jRailsが入ってないと押しても切り替わってくれない。jRailsは<%= javascript_include_tag :defaults %>の中身を自前のjQueryベースのjsに切り替えると言う結構気持ちの悪いプラギン。
button_from_hash
iPhoneでは短冊リスト作って画面右へ行くのが階層が深い方向で左上のバックボタンで戻るUIを使っているみたい。その左上のバックボタンをつくるのがbutton_from_hash。これが書くhtmlはただのリンクでちゃんと書き出しているのに、JSのほうで視覚効果を操作してるのがそれがうまく動いてくれない。
[ruby]
def button_from_hash(hash)
return “” if hash.blank?
is_back = (hash.delete(:back) == true)
if is_back
hash[:html_options] ||= {}
hash[:html_options][:id] = “backButton”
# hash[:html_options][:class] = “te_slide_right”
end
button_link_to(hash[:caption], hash[:url], hash[:html_options])
end
[/ruby]
むかつくので上の様に書き換えた。視覚効果いらない。
iphone.のサブドメインをつけると 一般ブラウザでもiPhone用画面が出てくれると言う事で、
<VirtualHost *:80>
ServerName domain.com
ServerAlias iphone.domain.com
って書き換えた。そこで疑問が。iPhoneでそのページを見に行くと強制的にiPhone用のレンダリングがされるみたいなんだけど、それを解除するのはどうしたらいいんだ?
cookies["browser"] == “desktop”
だったらいいみたい。
[ruby]
def original
cookies["browser"] = “desktop”
redirect_to root_path
end
[/ruby]
のアクションへリンクを貼ったらうまくいった。