添加decent_exposure后,以下规范失败:
it "redirects to root_path if product cannot be found" do
product = create :product
get :show, {id: 2}
expect(response).to redirect_to(root_path)
end
我使用CanCanCan并将以下代码添加到ApplicationController,因此当找不到记录并重定向到根路径时它会被抢救:
rescue_from ActiveRecord::RecordNotFound do
redirect_to root_path, alert: controller_name.singularize.capitalize << " cannot be found"
end
它确实有效,如果记录不存在则会重定向,并且我在控制台中看到“已完成302已发现”消息。但是规范失败了,消息'预期响应是重定向,但是&lt; 200&gt;'。似乎是由于'添加到http://localhost:3000/'之前'在布局/应用程序中渲染了产品/ show.html.haml',这是在添加了decent_exposure之后出现的。
在控制器中我只有:
expose(:product, attributes: :product_params)
expose(:products) { Product.paginate(page: params[:page], per_page: 5) }
没有显示动作。
感谢您的帮助!
答案 0 :(得分:0)
添加了显示操作:
def show
return unless product
end
现在它正常工作。