2012-02-16 68 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