2017-08-25 48 views
0

我在跟隨railstutorial第11章。 剛剛完成Listing 11.24並創建了新用戶,期望重定向到root_url並願意在服務器日誌中查找帳戶激活電子郵件這是我猜log/development.log)。Rails教程Ch11 - 沒有路由匹配[POST]「/ signup」

我想我在routes.rb做了一個錯字,但即使我複製粘貼自己的版本並重新啓動服務器錯誤仍然存​​在。我也沒有看到發佈'/註冊'路線。最近的routes.rb版本是Listing 11.1

如何解決這一問題?

回答

1

沒有POST /signup,這樣的錯誤是正確的

如果你看仔細11.24,你會看到它發佈到users_path,如第一個測試案例:

post users_path, params: { user: { name: "", 
            email: "[email protected]", 
            password:    "foo", 
            password_confirmation: "bar" } } 

users_path在11.1由resources :users其是指由UserController#create限定的POST /users所定義,示於11.23。

class UsersController < ApplicationController 
    . 
    . 
    . 
    def create 
    @user = User.new(user_params) 
    if @user.save 
     UserMailer.account_activation(@user).deliver_now 
     flash[:info] = "Please check your email to activate your account." 
     redirect_to root_url 
    else 
     render 'new' 
    end 
    end 
    . 
    . 
    . 
end 
+0

那你在說什麼?教程中有錯誤嗎?如何進行測試工作,並在開發服務器我得到這個錯誤? –

+0

不,就像我說過的,仔細看看'11.24',本教程根本不使用'POST/signup',它使用像我所展示的那樣定義的'POST/users'。 –

+0

通過在'/ users/new'中填寫表單,我被重定向到'/ post/signup'。爲什麼?我在哪裏可以找到該代碼? –

0

正如你所看到的,你只有一個get路線爲你的/註冊(這是指以服務的形式,爲用戶輸入他們的信息。你缺少的途徑是

post '/signup', to: 'users#create' 

因爲你創造。一個create行動UsersController

+0

11.1有一個'resources:users',默認情況下會創建'post'路由。 –

+0

是的,但是根據你的錯誤判斷,你希望'resources /:'用戶創建'POST/signup'而不是'POST/users'。 – Leito

+1

是的,但是當Marko試圖這樣做時,它實際上並不是他所鏈接的書所說的所有內容,而是書'users_path',它是'POST/users'而不是'POST/signup'。 –

相關問題