gpt4 book ai didi

ruby-on-rails - Rails 3.2 - 如何重定向到命名空间?

转载 作者:行者123 更新时间:2023-12-03 17:19:57 24 4
gpt4 key购买 nike

在 Rails 3.2 应用程序中,我想创建一些特定于移动设备的 View (和操作处理)。所以我创建了一个名为 mobile 的命名空间。

  namespace :mobile do
resources :sessions
resources :areas
end

例如,如果用户使用手机进入登录页面,我想使用我为该命名空间创建的 Controller 和 View 。

所以现在我有两种不同的登录方式:
new_mobile_session GET    /mobile/sessions/new(.:format)      mobile/sessions#new


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

但是,当请求来自移动设备时,如何将“移动”命名空间添加到请求中?

IE。将/sessions/new 更改为/mobile/sessions/new

我正在使用 Rack::MobileDetect,但我不知道如何为此使用 redirect_to。
config.middleware.use Rack::MobileDetect, :redirect_to => '/mobile'

或者我应该使用不同的方法?

谢谢。

最佳答案

您可以为此使用约束。
Rails 路由约束要么是响应匹配的类?或 lambda。

当约束应用于路线时,只有当约束评估为真时才会考虑该路线。

考虑这个类

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

您现在可以在这样的路由中使用这个类:
resources :sessions
resources :sessions, :controller=> 'mobile/sessions', :constraints => MobileConstraint.new

关于ruby-on-rails - Rails 3.2 - 如何重定向到命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com