Rails教程Ch11 - 没有路由匹配[POST]“/ signup”

时间:2017-08-25 15:57:52

标签: ruby-on-rails

我正在关注railstutorial第11章。 刚刚完成Listing 11.24并创建了新用户,期望被重定向到root_url并愿意在服务器日志中查找帐户激活电子邮件(我猜是log/development.log)。

我以为我在routes.rb中输错了,但即使我复制粘贴他的版本并重新启动服务器,错误仍然存​​在。我也没有看到'/ signup'的路线。最新版本的routes.rb位于Listing 11.1

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

没有POST /signup,因此错误是正确的。

如果仔细查看11.24,您会看到它发布到users_path,例如对于第一个测试用例:

post users_path, params: { user: { name:  "",
                                   email: "user@invalid",
                                   password:              "foo",
                                   password_confirmation: "bar" } }

users_pathresources :users在11.1中定义,引用由POST /users定义的UserController#create,如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

答案 1 :(得分:0)

正如您所看到的,您只有一个获取/注册的获取路径(这意味着为用户提供输入其信息的表单。您缺少的路线是

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

因为您在create内创建了UsersController操作。