0

我正在做 Michael Hartl 的 Rails 教程的第 7 章,在尝试注册开发用户时遇到错误。我已经通过 7.3 完成了这一章,所以我的所有测试现在都应该通过了,但我仍在The action 'create' could not be found for UsersController开发中。

这是我的用户控制器

class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new

  def create
    @user = User.new(user_params)
    if @user.save
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      render 'new'
    end
  end

    def user_params
      params.require(:user).permit(:name, :email, :password,
                                   :password_confirmation)
    end
    end     
end

在本教程的这一点上,我应该能够毫无问题地在在线表单中注册用户。这是我的 github 存储库https://github.com/ajhausdorf/sample_app

4

4 回答 4

7

你的def new还没有关闭。

这段代码应该可以工作

class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end # Here what you missing

  def create
    @user = User.new(user_params)
    if @user.save
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      render 'new'
    end
  end

    def user_params
      params.require(:user).permit(:name, :email, :password,
                                   :password_confirmation)
    end

end
于 2013-09-24T17:57:17.637 回答
3

end的 s 不正常:

class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end # You were missing one here.

  def create
    @user = User.new(user_params)
    if @user.save
      flash[:success] = "Welcome to the Sample App!"
      redirect_to @user
    else
      render 'new'
    end
  end

    def user_params
      params.require(:user).permit(:name, :email, :password,
                                   :password_confirmation)
    end
    # end # You have an extra one here.
end
于 2013-09-24T17:55:28.497 回答
3

你的new方法并没有在你认为它结束的地方结束;它包含了createuser_params方法。

您已经创建了在方法create 内部调用的本地方法new,而不是创建createUserController类上调用的常规实例方法。

于 2013-09-24T17:57:09.827 回答
0
def new
  @user = User.new
end  # you are missing this line

def create
于 2014-02-20T17:19:13.147 回答