“1”的未定义方法“允许”:字符串

undefined method `permit' for "1":String

我在 运行 RSpec 时收到此错误,我不知道它想从我这里得到什么?我不知道为什么说 permit 未定义? 1:string 这是怎么回事?如果有人有想法,我很想知道。为了清楚起见,这是我的错误和代码。

CONTROLLER:

  class SubscribersController < ApplicationController
def index
  @subscriber = Subscriber.all
end

def new
  @subscriber = Subscriber.new
end

def create
  @subscriber = Subscriber.create(subscriber_params)
  if @subscriber.save
    flash[:notice] = "Subscriber Has Been Successfully Created"
    redirect_to new_subscriber_path(:subscriber)
  else
    render "new"
  end
end

def search
  @subscriber = Subscriber.new
end

def visit
  @subscriber = Subscriber.find_by_phone_number(params[:phone_number])
  if @subscriber
    @subscriber.visit += 1
    @subscriber.save
    flash[:notice] = "thanks"
    redirect_to subscribers_search_path(:subscriber)
  else
    render "search"
  end
end


private

def subscriber_params
 params.require(:subscriber).permit(:first_name, :last_name, :email, :phone_number)
end
end

测试:

  require "rails_helper"

  describe SubscribersController do
  include Devise::TestHelpers

  let(:user) { FactoryGirl.create(:user)}


  it "creates a new subscriber" do
    sign_in(user)
    subscriber = FactoryGirl.create(:subscriber)
    expect { post :create, :subscriber =>  subscriber }.to    change(Subscriber, :count).by(1)
  end
end

订阅者对象

如果您需要查看其他内容,请告诉我。

我认为这里的问题是当您在规范中提交请求时,您提供的是 ruby 对象而不是散列值。请尝试改用以下内容:

subscriber = FactoryGirl.attributes_for(:subscriber)
expect { post :create, :subscriber => subscriber }.to ...