嗨,我不知道如何在这里做链式过滤器。这是我的代码
before_filter :prepare_for_mobile
protect_from_forgery
private
def mobile_device?
request.user_agent =~ /Mobile|webOS/
end
helper_method :mobile_device?
def prepare_for_mobile
request.format = :mobile if mobile_device?
end
我想要的是:prepare_for_mobile
之后,如果它不是移动设备,它将重定向到普通网站,我想检查用户是否已登录。在移动版本上,不需要用户登录in。
在普通网站上,我也想:except
一个特定的控制器。
我该怎么做?
非常感谢。
答案 0 :(得分:1)
好吧,有几件事......看起来你正在部分地实现Railscasts.com here的解决方案(只有你试图在没有设置会话参数的情况下这样做)。
您不需要“链接”过滤器。只需创建一个新函数(例如:get_ready),按照您想要的顺序调用其他两个函数,并将其作为过滤器。
before_filter :get_ready
protect_from_forgery
private
def get_ready
prepare_for_mobile
the_other_thing_you_want_to_chain
end
def mobile_device?
request.user_agent =~ /Mobile|webOS/
end
helper_method :mobile_device?
def prepare_for_mobile
request.format = :mobile if mobile_device?
end
def the_other_thing_you_want_to_chain
do_something unless mobile_device?
end
如果要基于移动设备在单个站点内分支行为,则应在控制器,路由或两者中执行此操作。我希望我回答你的问题。