RSpec testing destroy controller action throws an error: ActionView::MissingTemplate
RSpec testing destroy controller action throws an error: ActionView::MissingTemplate
我正在为我的控制器编写测试,但我不断收到错误 ActionView::MissingTemplate
。我已经查看了之前提出的相关问题,但我似乎无法在我的场景中使用它。
这是我的控制器代码:
def confirm_destroy
render :layout => 'overlay'
end
def destroy
@role.destroy
end
这是我写的测试:
describe 'DELETE #destroy' do
let!(:role) { create(:role, user: current_user) }
let(:params) { {id: role.id, format: :json} }
it 'performs a delete' do
expect { delete :destroy, params }.to change { Role.count }.by(-1)
end
end
当我 运行 测试时出现错误:
ActionView::MissingTemplate:
Missing template company/settings/roles/destroy, application/destroy with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :slim]}. Searched in:
* "/my_app/app/views"
* "/usr/local/bundle/gems/devise-4.5.0/app/views"
知道为什么会这样吗?谢谢
当控制器 destroy
操作完成时,Rails 尝试呈现默认模板(视图)并且它未定义,这意味着您没有文件 my_app/app/views/company/settings/roles/destroy.json
.
您有多种修复方法:
- 定义
my_app/app/views/company/settings/roles/destroy.json
它将被渲染(不建议 JSON)。
- 重定向到其他操作,例如
index
(同样,不建议 JSON)。
- 渲染 json 或显式不渲染任何内容(见下文)
--
# render nothing:
def destroy
@role.destroy
head :ok
end
# render json:
# render nothing:
def destroy
@role.destroy
render json: { deleted: true }, status: :no_content
end
我正在为我的控制器编写测试,但我不断收到错误 ActionView::MissingTemplate
。我已经查看了之前提出的相关问题,但我似乎无法在我的场景中使用它。
这是我的控制器代码:
def confirm_destroy
render :layout => 'overlay'
end
def destroy
@role.destroy
end
这是我写的测试:
describe 'DELETE #destroy' do
let!(:role) { create(:role, user: current_user) }
let(:params) { {id: role.id, format: :json} }
it 'performs a delete' do
expect { delete :destroy, params }.to change { Role.count }.by(-1)
end
end
当我 运行 测试时出现错误:
ActionView::MissingTemplate:
Missing template company/settings/roles/destroy, application/destroy with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :slim]}. Searched in:
* "/my_app/app/views"
* "/usr/local/bundle/gems/devise-4.5.0/app/views"
知道为什么会这样吗?谢谢
当控制器 destroy
操作完成时,Rails 尝试呈现默认模板(视图)并且它未定义,这意味着您没有文件 my_app/app/views/company/settings/roles/destroy.json
.
您有多种修复方法:
- 定义
my_app/app/views/company/settings/roles/destroy.json
它将被渲染(不建议 JSON)。 - 重定向到其他操作,例如
index
(同样,不建议 JSON)。 - 渲染 json 或显式不渲染任何内容(见下文)
--
# render nothing:
def destroy
@role.destroy
head :ok
end
# render json:
# render nothing:
def destroy
@role.destroy
render json: { deleted: true }, status: :no_content
end