首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails教程对第9章的帮助

Rails教程对第9章的帮助
EN

Stack Overflow用户
提问于 2015-11-06 23:45:53
回答 1查看 319关注 0票数 0

我在9.2.2节中遇到了4个错误。

错误

错误“test_unsuccessful_edit”,UsersEditTest,2015-11-05 04:35:59 -0600 test_unsuccessful_edit#UsersEditTest (1446719759.23 s) NoMethodError: NoMethodError:未定义方法correct_user?' for #<UsersController:0x007fcdf48ad378> app/controllers/users_controller.rb:58:incorrect_user的测试/集成/用户_编辑_test.rb:10:in block in <class:UsersEditTest>' app/controllers/users_controller.rb:58:incorrect_user‘test/integration/users_edit_test.rb:10:in block in ' ERROR["test\_successful\_edit", UsersEditTest, 2015-11-05 04:35:59 -0600] test\_successful\_edit#UsersEditTest (1446719759.28s) NoMethodError: NoMethodError: undefined methodcorrect_user?表示app/controllers/users_controller.rb:58:incorrect\_user' test/integration/users\_edit\_test.rb:21:inblock in ‘app/controllers/users_controller.rb:58:incorrect\_user' test/integration/users\_edit\_test.rb:21:inblock in’ ERROR"test_should_redirect_edit_when_logged_in_as_wrong_user",UsersControllerTest2015-11-05 :35:59 -0600 test_should_redirect_edit_when_logged_in_as_wrong_user#UsersControllerTest (1446719759.42 s) NoMethodError: NoMethodError:未定义方法correct_user?' for #<UsersController:0x007fcdf529f778> app/controllers/users_controller.rb:58:incorrect_user‘test/controllers/users_controller_test.rb:29:in block in <class:UsersControllerTest>' app/controllers/users_controller.rb:58:incorrect_user’test/controllers/users_controller_test.rb:29:in block in ' ERROR["test\_should\_redirect\_update\_when\_logged\_in\_as\_wrong\_user", UsersControllerTest, 2015-11-05 04:35:59 -0600] test\_should\_redirect\_update\_when\_logged\_in\_as\_wrong\_user#UsersControllerTest (1446719759.44s) NoMethodError: NoMethodError: undefined methodcorrect_user?表示app/controllers/users_controller.rb:58:incorrect\_user' test/controllers/users\_controller\_test.rb:36:inblock in ‘app/controllers/users_controller.rb:58:incorrect\_user' test/controllers/users\_controller\_test.rb:36:inblock in’

32/32:====================== 100%时间: 00:00:01,时间: 00:00:01

在1.70355s 32次测试中完成,64次断言,0次失败,4次错误,0次跳转

Users_controller.rb

代码语言:javascript
复制
class UsersController < ApplicationController
  before_action :logged_in_user, only: [:edit, :update]
  before_action :correct_user,   only: [:edit, :update]

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

  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      log_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(user_params)
      flash[:success] = "Profile updated"
      redirect_to @user
    else
      render 'edit'
    end
  end

  private

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

    # Before Filters

    # Confirms a logged-in user.
    def logged_in_user
      unless logged_in?
        flash[:danger] = "Please log in."
        redirect_to login_url
      end
    end

    # Confirms the correct user.
    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_url) unless correct_user?(@user)
    end
end

User_controller_test

代码语言:javascript
复制
require 'test_helper'

class UsersControllerTest < ActionController::TestCase

    def setup
        @user           = users(:michael)
        @other_user = users(:archer)
    end

    test "should get new" do
    get :new
    assert_response :success
  end

  test "should redirect edit when logged in" do
    get :edit, id: @user
    assert_not flash.empty?
    assert_redirected_to login_url
  end

  test "should redirect update when not logged in" do
    patch :update, id: @user, user: { name: @user.name, email: @user.email }
    assert_not flash.empty?
    assert_redirected_to login_url
  end

  test "should redirect edit when logged in as wrong user" do
    log_in_as(@other_user)
    get :edit, id: @user
    assert flash.empty?
    assert_redirected_to root_url
  end

  test "should redirect update when logged in as wrong user" do
    log_in_as(@other_user)
    patch :update, id: @user, user: { name: @user.name, email: @user.email }
    assert flash.empty?
    assert_redirected_to root_url
  end
end

users.yml

代码语言:javascript
复制
michael:
  name: Michael Example
  email: michael@example.com
  password_digest: <%= User.digest('password') %>

archer:
  name: Sterling Archer
  email: duchess@example.gov
  password_digest: <%= User.digest('password') %>

users_edit_test

代码语言:javascript
复制
require 'test_helper'

class UsersEditTest < ActionDispatch::IntegrationTest
  def setup
    @user = users(:michael)
  end

  test "unsuccessful edit" do
    log_in_as(@user)
    get edit_user_path(@user)
    assert_template 'users/edit'
    patch user_path(@user), user: { name:  "",
                                    email: "foo@invalid",
                                    password:              "foo",
                                    password_confirmation: "bar" }
    assert_template 'users/edit'    
  end

  test "successful edit" do
    log_in_as(@user)
    get edit_user_path(@user)
    assert_template 'users/edit'
    name  = "Foo Bar"
    email = "foo@bar.com"
    patch user_path(@user), user: { name:  name,
                                    email: email,
                                    password:              "",
                                    password_confirmation: "" }
    assert_not flash.empty?
    assert_redirected_to @user
    @user.reload
    assert_equal name,  @user.name
    assert_equal email, @user.email
    end
end

我认为这是唯一需要的帮助。我已经挣扎了一段时间了。这是我的第一篇文章,如果不容易阅读,很抱歉。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-07 06:10:23

correct_user?任何地方都没有定义。

redirect_to(root_url) unless correct_user?(@user)

Rails的语法糖将寻找模型标志correct_user或布尔返回函数#correct_user?吸气。我假设您试图验证来自用户的更新请求实际上属于正确的用户。为此,必须将current_user存储在会话中,然后检查请求param:id == current_user.id

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33577339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档