5

私がやっている Rails 3.2 アプリケーションでは、モバイル デバイスに固有のビュー (およびアクション処理) を作成したいと考えています。そこで、mobile という名前空間を作成しました。

  namespace :mobile do
    resources :sessions
    resources :areas
  end  

たとえば、ユーザーがモバイルでログインページにアクセスした場合、その名前空間用に作成したコントローラーとビューを使用したいと考えています。

したがって、ログインには2つの異なる方法があります。

new_mobile_session GET    /mobile/sessions/new(.:format)      mobile/sessions#new

new_session GET    /sessions/new(.:format)             sessions#new

しかし、リクエストがモバイルから来た場合、リクエストに「モバイル」名前空間を追加するにはどうすればよいですか?

つまり、/sessions/new を /mobile/sessions/new に変更します。

Rack::MobileDetect を使用していますが、そのために redirect_to を使用する方法がわかりません。

config.middleware.use Rack::MobileDetect, :redirect_to => '/mobile'

または、別のアプローチを使用する必要がありますか?

ありがとう。

4

1 に答える 1

1

そのために制約を使用できます。Railsルーティング制約は、一致に応答するクラスですか? またはラムダ。

制約がルートに適用されると、制約が true と評価された場合にのみルートが考慮されます。

このクラスを検討してください

class MobileContraint
  def matches? request
     request.user_agent =~ /Mobile|webOS/
  end
end

このクラスをルートで次のように使用できるようになりました。

resources :sessions
resources :sessions, :controller=> 'mobile/sessions', :constraints => MobileConstraint.new
于 2013-10-24T07:05:48.313 に答える