首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hartl的Rails 7.3教程注册测试失败

Hartl的Rails 7.3教程注册测试失败
EN

Stack Overflow用户
提问于 2015-09-13 19:56:22
回答 2查看 242关注 0票数 0

在编写了users_signup_test.rb代码并期望得到绿色响应后,由于某种原因,它仍然失败。该教程说,我应该得到一个绿色的反应在这个阶段,但我不是。这就是我所收到的:

代码语言:javascript
复制
1) Error:
UsersSignupTest#test_invalid_signup_information:
ActiveModel::ForbiddenAttributesError: ActiveModel::ForbiddenAttributesError
    app/controllers/users_controller.rb:12:in `create'
    test/integration/users_signup_test.rb:8:in `block (2 levels) in <class:UsersSignupTest>'
    test/integration/users_signup_test.rb:7:in `block in <class:UsersSignupTest>'

16 runs, 31 assertions, 0 failures, 1 errors, 0 skips

我唯一需要做的偏离书可能会影响到这一点,这是我在user.rb模型中必须做的一件事,它如下所示:

代码语言:javascript
复制
validates( :email, presence: true, length: { maximum: 255}, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } )

相对于这本书:

代码语言:javascript
复制
validates( :email, presence: true, length: { maximum: 255}, format: { with: VALID_EMAIL_REGEX }, uniqueness: case_sensitive: false )

这会给我一个错误。

这是我的users_signup_test.rb文件:

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

class UsersSignupTest < ActionDispatch::IntegrationTest

  test "invalid signup information" do
    get signup_path
    assert_no_difference 'User.count' do
      post users_path, user: { name: "", email: "user@invalid", password: "foo", password_confirmation: "bar" }
    end
    assert_template 'users/new'
  end

end

如果需要其他代码来帮助诊断这个问题,请告诉我。

另外,我还遇到了其他人使用sass-rails 5.0.1的问题,因此我使用的是sass-rails 5.0.2。

谢谢大家的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-13 20:10:44

在创建用户时,您是否有良好的定义所需的参数(user_params函数)?如果您正在学习本教程,您应该在您的users_controller.rb中以类似这样的内容结束

代码语言:javascript
复制
class UsersController < ApplicationController

  def create
    @user = User.new(user_params)
    # more logic
  end

  private

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

因为看起来您传递的是控制器不允许的用户参数。

票数 2
EN

Stack Overflow用户

发布于 2015-09-13 20:18:20

找到答案了!

对这个不必要的职位很抱歉。对误差进行了研究,发现误差与强参数有关。仔细看了看这本书,我错过了这句话:

代码语言:javascript
复制
@user = User.new(user_params)

它改变了

代码语言:javascript
复制
@user = User.new(params[:user])

所以我没有把参数正确地传递给控制器。对不起大家!

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

https://stackoverflow.com/questions/32553948

复制
相关文章

相似问题

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