0
Failures:

1) User pages signup with valid information edit with invalid information 
 Failure/Error: before { click_button "Save changes" }
 AbstractController::ActionNotFound:
   The action 'update' could not be found for UsersController
 # (eval):2:in `click_button'
 # ./spec/requests/user_pages_spec.rb:105:in `block (6 levels) in <top (required)>'

 Finished in 1.13 seconds
 62 examples, 1 failure

 Failed examples:

 rspec ./spec/requests/user_pages_spec.rb:107 # User pages signup with valid information edit with invalid information 

このことから、users_controller.rb で更新アクションが表示されていないことがわかりますが、そこにはあります。

 class UsersController < ApplicationController

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

 def new
   @user = User.new
 end


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


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


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


def update
 @user = User.find(params[:id])
 if @user.update_attributes(params[:user])
  flash[:success] = "Profile updated"
  sign_in @user
  redirect_to @user
else
  render 'edit'
 end
end

そして、どういうわけか2つの編集アクションになりましたが、そのうちの1つを削除すると、テストをまったく実行できます。私が抱えている問題の 99% は、どこにでも終わりがあり、間違った場所に新しいアクションを挿入することだと思います。助けてくれてありがとう

4

2 に答える 2

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

ここにダブルがありendます。これで終了class UsersControllerです。これらの行をすべて削除するだけで問題ありません。

于 2012-12-13T03:15:38.900 に答える
2

最初にすべての端を一致させる必要があります。おそらく、UserController クラスが最初の編集アクションで終了する原因となった 2 番目の編集アクションを削除していたため、そのアクションの余分な終了が原因でした...

class UsersController < ApplicationController

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

  def new
    @user = User.new
  end


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

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

  def update
    @user = User.find(params[:id])
    if @user.update_attributes(params[:user])
      flash[:success] = "Profile updated"
      sign_in @user
      redirect_to @user
    else
      render 'edit'
    end
  end
end
于 2012-12-13T03:16:21.873 に答える