提交注册表单时出错

时间:2016-05-16 13:47:50

标签: ruby-on-rails ruby params

在测试提交注册表单时,我一直收到错误。失败/错误:@ user = User.new(params [:user])
ActiveModel :: ForbiddenAttrubutesError:
< / p>

Error Image


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
            redirect_to @user
        else
            render 'new'
        end
  end

  private

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


schema.rb

ActiveRecord::Schema.define(version: 20160510092655) do

  create_table "users", force: :cascade do |t|
    t.string   "name"
    t.string   "email"
    t.datetime "created_at",      null: false
    t.datetime "updated_at",      null: false
    t.string   "password_digest"
  end

  add_index "users", ["email"], name: "index_users_on_email", unique: true

end


user_pages_spec.rb

require 'rails_helper'

RSpec.describe "UserPages", type: :request do

  subject {page}

  describe "profile page" do
    let (:user) { FactoryGirl.create(:user)}
    before { visit user_path(user)}

    it { should have_selector('h1', text: user.name) }
    it { should has_selector?('title', text: user.name) }
  end

  describe "signup page" do
    before {visit signup_path}

    it {should has_selector?('h1', text: 'Signup')}
    it {should has_selector?('title', text: full_title('Sign Up'))}
  end

  describe "singup" do
    before { visit signup_path }
    let(:submit) { "Create my account" }
    describe "with invalid information" do
        it "should not create a user" do
            expect { click_button submit }.not_to change(User, :count)

        end
    end

    describe "with valid information" do
        before do
            fill_in "Name",         with: "Example User"
            fill_in "Email",        with: "user@example.com"
            fill_in "Password",     with: "foobar"
            fill_in "Confirmation", with: "foobar"
        end

        it "should create a user" do
            expect { click_button submit }.to change(User, :count).by(1)
        end
    end
  end
end

1 个答案:

答案 0 :(得分:2)

在您的控制器中,尝试使用create方法:

def create
    @user = User.new(user_params)
    if @user.save
        redirect_to @user
    else
        render 'new'
    end
end
相关问题