“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 ...
我在 运行 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 ...