2012-02-16 72 views
3

有没有简单的方法可以禁用设计的sign_up页面?我有一个页面的注册和授权表单,所以我不需要任何其他页面。我想禁用路由负责这些页面,这样如果用户输入users/sign_up他不应该到达注册页面,但应该被重定向到其他页面。注册失败后重新设计

+0

您是否找到解决方案?你有没有改变'respond_with'? – Ashitaka 2012-03-29 00:45:19

+0

@Ashitaka 最后,我跳过了所有的设计默认路由,并指定了映射到设计控制器的'post'和'get'路由列表。然后我重写 设计控制器在认证或注册或密码恢复失败时使用'respond_with({},:location => after_sign_up_fails_path_for(resource))''。请注意,您必须创建一个'after_sign_up_fails_path_for(resource)'方法。它内部只是放在你想去的地方(for_example'home_path')。这对我有效。 – RomanKapitonov 2012-03-29 11:19:05

回答

2

您可以覆盖注册控制器并使new操作重定向到某处。 Here are some responses to a similar question that was posted on StackOverflow其中解释了必要的步骤。

+1

#Batkins, 'clean_up_passwords资源; respond_with resource' 此代码在注册过程中出现错误(例如用户存在,空电子邮件)时执行。如果我在这段代码之后编写'redirect_to some_path',我会得到双重渲染异常。如果我写'redirect_to some_path'而不是'respond_with resource',我被重定向,但'devise_error_messages'是空的,所以我不能在视图中使用它们,我被重定向到。有什么方法可以在我重定向到的视图中显示错误消息吗? – RomanKapitonov 2012-02-16 17:10:28

+0

不知道您已收到以前的评论 – RomanKapitonov 2012-02-16 17:17:50

+0

您需要使用'redirect_to some_path并返回'。在重定向代码发生后,这将使其停止在该方法内执行代码,这将防止之后可能发生的其他呈现/重定向语句。 [阅读RoR官方网站上的文档](http://guides.rubyonrails.org/layouts_and_rendering.html#avoiding-double-render-errors)以获取更详细的解释。 – Batkins 2012-02-16 19:35:57