2013-09-24 2 views
0

Я занимаюсь разработкой главы 7 руководства Rails Майкла Хартла, и я получаю ошибки при попытке зарегистрировать пользователя в разработке. Я закончил главу через 7.3, поэтому все мои тесты должны проходить сейчас, но я все еще получаю The action 'create' could not be found for UsersController в разработке.Действие «create» не найдено для 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

ответ

6

Ваш 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 
3

Ваши end с находятся в неисправном состоянии:

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 
3

Ваш метод new не заканчивается, когда вы думаете, что заканчивается; он охватывает как методы create, так и user_params.

Вы создали локальный метод, называемый createвнутриnew метод, а не создавать регулярный метод экземпляра под названием create на UserController класса.

0
def new 
    @user = User.new 
end # you are missing this line 

def create 
Смежные вопросы