モバイルページの統合テストを書いています。Railscastで説明されているように、モバイル システムをセットアップしました。基本的に、デバイスがモバイルの場合はセッションが設定され、コントローラーはモバイルでない場合はデスクトップのホームページに送信しますが、モバイルの場合はモバイルのホームページに送信します。Rspec はセッションをサポートしていないため、モバイルのホームページに移動することになっていることを統合ファイルに知らせる方法がわかりません。
モバイルかどうかを検出するヘルパーで定義されたメソッド。
def check_for_mobile
session[:mobile_override] = params[:mobile] if params[:mobile]
end
def mobile_device?
if session[:mobile_override]
session[:mobile_override] == "1"
else
(request.user_agent =~ /Mobile|webOS/) && (request.user_agent !~ /iPad/)
end
end
コントローラーアクション
def home
check_for_mobile
if mobile_device?
@devise_mapping ||= Devise.mappings[:company]
render "pages/home_mobile"
elsif company_signed_in?
redirect_to companies_home_path
else
@request = Request.new
@request.company = params[:company]
render 'pages/landing'
end
end
基本的mobile_device?
には、リクエスト仕様で true を返さなければなりません。これを機能させるためにたくさんのくだらないコードを書くこともできますが、それを行う良い方法があるに違いありません。