如何從控制器正確渲染名爲路徑的導軌?渲染導軌名爲路由
的routes.rb:
get "logout" => "sessions#destroy", :as => "logout"
get "login" => "sessions#new", :as => "login"
get "signup" => "users#new", :as => "signup"
root :to => "home#index"
resources :users
resources :sessions
resources :likes
user_controller.rb:
def new
@user = User.new
end
def create
@user = User.new params[:user]
if @user.save
login(params[:user][:email], params[:user][:password])
redirect_to root_url, :notice => "Welcome! You have signed up successfully."
else
render :new
end
end
問題是:在註冊頁面上/signup
和當@user
數據沒有填寫正確和render :new
被稱爲,而不是去url /signup
它去/users
。我會使用redirect_to
但id寧願不要,因爲我想保存在頁面上的錯誤告訴用戶哪些數據沒有提供。後
更新添加match "signup" => "users#create", :via => "post"
root / {:controller=>"home", :action=>"index"}
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
signup GET /signup(.:format) {:action=>"new", :controller=>"users"}
POST /signup(.:format) {:action=>"create", :controller=>"users"}
感謝
這很正常,因爲它呈現用戶的新方法。那有什麼問題? – damienbrz
理想情況下,我希望URL保持/註冊,而不是/用戶 – GTDev
好,所以看看Joel Friedlaender的回答。但是如果你看看REST,你得到/用戶/新的,當你創建POST /用戶時,但是如果它有任何錯誤,它會呈現:URL /用戶新。 – damienbrz