2009-12-29 64 views
2

我有一个红宝石的Rails应用程序,它有一个注册页面。不同的页面重定向到注册页面,并且在注册完成后需要设置另一页面以重定向到。做这个的最好方式是什么?目前,我正在这样做:如何在红宝石轨道上提交注册页面后重定向到哪里?

的link_to“/注册重定向= /胡说/页6

...并获得在注册控制器重定向变量,并使用该设置后注册页面。我担心这可能会导致一些安全问题,但我并不确定。

这是可以接受的还是有更好的方法?

回答

5

我使用这2种方法来帮助这在我application_controller.rb

def store_location 
    session[:return_to] = params[:redirect] 
end 

def redirect_back_or_default(default) 
    redirect_to(session[:return_to] || default) 
    session[:return_to] = nil 
end 

当他们到达注册页面,只需运行store_location,当它完成和完成后,使用redirect_back_or_default方法。

(当然修改这个根据自己的喜好)

1

你有没有用于身份验证的插件/宝石?如果你没有,我建议清除或设计。许可将你自动地重定向到“你从哪里来”,并且两者都像开发人员一样安全,并且使用它们已经让它成为(这意味着相当安全)。

现在我更喜欢Devise说了这一切。

Garrett的解决方案看起来像来自Restful身份验证,这是另一个好的身份验证插件。

+0

是的,我正在使用宁静的身份验证 – NotDan 2009-12-29 00:22:55

+0

最有可能的是,这只是我已经收集到我现在非常强大的'application_controller.rb'中的一段代码,我发现它很有用。虽然我在Authlogic中使用了这个,但是使用'before_filter'会自动为我启动。 – Garrett 2009-12-29 00:24:18