2011-09-23 151 views
1

對於Rails來說,我還是一個新手,並且很難理解Rails中路徑系統是如何工作的。Rails渲染路徑路徑

在我的routes.rb我創建別名爲註冊:

match 'signup' => 'user#new' 
resource :user, :controller => 'user' 

的作用是存在的,要去/註冊顯示正確的行動。到現在爲止還挺好。

現在,當我提交我的註冊表單時,它像往常一樣運行POST的創建操作。這裏是我卡住的地方。

如果註冊失敗,我想再次向用戶顯示註冊表單。一種選擇是做一個「新的」渲染,但是這需要用戶/用戶而不是/註冊。

UserController的

class UserController < ApplicationController 

    def new 
    @user = User.new 
    end 


    def create 

    @user = User.new(params[:user]) 

    if @user.save 
     redirect_to root_url 
    else 
     render "new" 
    end 

    end 

end 

任何幫助表示讚賞!

更新 - 發現的解決方案

新增2比賽路線爲/註冊,使用:通過選項

match 'signup' => 'user#new', :as => :signup, :via => 'get' 
match 'signup' => 'user#create', :as => :signup, :via => 'post' 

這樣的應用程序知道張貼到時/註冊它應該運行的創建動作,並且當http方法得到時,它使用新的動作。

控制器標記與上面發佈的相同。

回答

0

嘗試添加 「:as」 給你的路線是這樣的:

match 'signup' => 'user#new', :as => :signup 

,然後做

redirect_to signup_url 

在你的控制器。

這對我有用。我仍然不知道爲什麼。也許別人有解釋。

+0

嗨Hiasinho,謝謝你的回答。這將在重定向到註冊時起作用。但是,我想保留用戶對象,以便預先填寫表單。然而你的回答讓我朝着正確的方向前進。我添加結果。 –