即使我在控制器中执行了redirect_to,模板也会丢失错误

2023-12-28

我刚刚开始从 Agile Web Development With Rails 学习 Ruby on Rails。

正在做一个购物车应用程序并正在实现“清空购物车”功能。

<%= button_to 'Empty cart', @cart, method: :delete,
data: { confirm: 'Are you sure?' } %>

单击“清空购物车”按钮会调用购物车控制器中的销毁操作

# DELETE /carts/1
# DELETE /carts/1.json

def destroy
  @cart = current_cart
  @cart.destroy
  @session[:cart_id] = nil

 respond_to do |format|
  format.html { redirect_to store_url, notice: 'Your cart is currently empty' }
  format.json { head :no_content }
 end
end

在这里,我将其重定向到 store_url,但它给了我一个错误。

模板缺失 缺少模板 carts/destroy、应用程序/销毁 {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :咖啡]}。搜索位置:*“/Users/anil20787/workspace/railsdir/depot/app/views”

这是输出耙路线

    Prefix Verb   URI Pattern                    Controller#Action
line_items GET    /line_items(.:format)          line_items#index
           POST   /line_items(.:format)          line_items#create


new_line_item GET    /line_items/new(.:format)      line_items#new

edit_line_item GET    /line_items/:id/edit(.:format) line_items#edit

 line_item GET    /line_items/:id(.:format)      line_items#show
           PATCH  /line_items/:id(.:format)      line_items#update
           PUT    /line_items/:id(.:format)      line_items#update
           DELETE /line_items/:id(.:format)      line_items#destroy

     carts GET    /carts(.:format)               carts#index
           POST   /carts(.:format)               carts#create

  new_cart GET    /carts/new(.:format)           carts#new

 edit_cart GET    /carts/:id/edit(.:format)      carts#edit

      cart GET    /carts/:id(.:format)           carts#show
           PATCH  /carts/:id(.:format)           carts#update
           PUT    /carts/:id(.:format)           carts#update
           DELETE /carts/:id(.:format)           carts#destroy

   store_index GET    /store/index(.:format)         store#index

  products GET    /products(.:format)            products#index
           POST   /products(.:format)            products#create

   new_product GET    /products/new(.:format)        products#new

  edit_product GET    /products/:id/edit(.:format)   products#edit

   product GET    /products/:id(.:format)        products#show
           PATCH  /products/:id(.:format)        products#update
           PUT    /products/:id(.:format)        products#update
           DELETE /products/:id(.:format)        products#destroy

     store GET    /                              store#index

我确实看过this https://stackoverflow.com/questions/7191737/template-is-missing-when-using-redirect-to and this https://stackoverflow.com/questions/5922462/rails-redirect-to-another-controller-method-throwing-template-missing和我的问题类似的帖子。但我不知道需要做什么。

感谢任何解决此问题的帮助。

编辑: - 在redirect_to周围添加了{} - 添加了“耙路线”输出


好的。我在理解工作原理时犯了一个错误,在遵循教程时忽略了一些细节。下面是我的CartsController(部分)以及错误的原因

class CartsController < ApplicationController
before_action :set_cart, only: [:show, :edit, :update, :destroy]
 ..

  # DELETE /carts/1
  # DELETE /carts/1.json
  def destroy
    @cart = current_cart
    @cart.destroy
    @session[:cart_id] = nil


    respond_to do |format|
      format.html { redirect_to store_url, notice: 'Your cart is currently empty' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_cart
      begin
        @cart = Cart.find(params[:id])
      rescue ActiveRecord::RecordNotFound
        logger.error "Attempt to access invalid cart #{params[:id]}"
        redirect_to store_url, notice: 'Invalid cart'
      else
        respond_to do |format|
          format.html # show.html.erb
          format.json { render json: @cart }
        end
      end
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def cart_params
      params[:cart]
    end
end

为什么会出现这个问题:

辅助方法“set_cart”不应在成功时自行发回响应。如果它发送响应,则操作动作将根本不会被执行。因此,它应该尝试获取当前购物车并将其保存在 @cart 实例变量中。我的 set_cart 方法实际上尝试发回响应。正是这种响应尝试引发了错误。

我的控制器有一个过滤器,它在销毁之前调用“set_cart”。“set_cart”方法尝试发回 HTML 响应,并在过程中搜索不存在的 destroy.html.erb 视图,并导致丢失视图异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使我在控制器中执行了redirect_to,模板也会丢失错误 的相关文章

  • 来自 csv.read 模拟文件的 rspec 测试结果

    我正在使用 ruby 1 9 并且正在尝试执行 BDD 我的第一个测试 应该在 csv 中读取 有效 但第二个测试 我需要模拟文件对象 却不起作用 这是我的型号规格 require spec helper describe Person d
  • 使用brew时出现“错误的解释器”错误

    当我尝试运行任何 brew 命令时 出现此错误 Holger Sindbaeks MacBook Air holgersindbaek brew help bash usr local bin brew usr bin ruby bad i
  • postgres 数组字段上的 ActiveAdmin 过滤器

    我在 ActiveAdmin 中添加了以下过滤器 filter roles as select collection Model ROLES multiple true 但是当我选择过滤器值来搜索角色时 它给了我以下错误 PG Invali
  • Rails 5 - Google 地图 - Javascript 错误 - initMap 不是函数 - 修复一个 js 问题会产生另一个问题

    多年来我一直在尝试弄清楚如何在我的 Rails 应用程序中使用谷歌地图 我目前正在尝试使用 Rails 5 我也一直在试图弄清楚如何让我的 javascript 在生产环境中工作 我最近对这些挑战的尝试概述于生产问题帖子 https sta
  • Rails/heroku 从 gem 迁移到 toolbelt

    我曾经在一个项目中使用过 heroku gem 既然工具带已经出来了 我想换一个 我从 Gemfile 中删除了 gem 并通过 gem uninstall heroku 卸载了它 我使用heroku网站上的pkg安装了heroku工具带
  • 动态分配背景图片scss/sass

    我想要做的是有一个表单 您可以在其中上传图片 然后当您查看该对象时 图片会在特定 div 中居中 垂直和水平向上倾斜 其大小未知等 除非有办法使用 image tag 帮助器将其垂直居中 否则我希望能够使用该图像作为背景图像 在我的 css
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正
  • 对 Rails 3.1 中的特定路由强制使用 SSL

    我需要强制启用 SSL所有路线在我的申请中除了landing index In config application rb 我有 config force ssl true Then in landing controller rb 我有
  • simple_fields_for 没有出现 [rails 4]

    我正在尝试创建两个隐藏字段 其中一个显示没有问题 但来自嵌套表单的另一个则没有 产品 rb class Product lt ActiveRecord Base has many product options dependent dest
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • Rails - 使用 %W

    我有以下效果很好的 def steps w hello billing confirmation end steps first 但我想这样做 def step title w Upload a photo Billing Info Con
  • Flash观看后不清晰

    这是我的创建动作 它创建一个新的 Message 实例 并通过模型验证进行检查 然后有一个简单的 if else 循环 如果模型验证已完成 则发送消息 如果要发送另一个视图 则渲染 新 视图 如果模型验证未得到满足 它只会再次呈现 新 视图
  • 如何生成devise gem的注册控制器

    我已经设置了 Devise 我已经在 user rb 文件中设置了以下代码 def self create auto password generated password Devise friendly token first 8 sel
  • json、rails、javascript 中的解析错误

    我需要将 ruby 数组放入 javascript 数组中 但出现解析错误 var characters 这就是我将 ruby 嵌入到内联 javascript 中的方式 但它出现了解析错误 我应该如何将此 ruby 数组放入 javasc
  • 在 Rails 中,我可以通过委托方法订购查询吗?

    我在通过委托方法订购查询时遇到困难 我的任务是帮助将一个相当大的 Rails 3 应用程序升级到 Rails 4 我在索引操作中遇到了这个查询 我知道这些对象的命名是可怕且令人困惑的 measurements controller rb d
  • 在 Mac 上使用“sudo gem install nokogiri”安装 nokogiri 时出错

    我试图安装 nokogiri 因为它是启动 Rails 所必需的 rails s usr local rvm gems ruby 1 9 3 p194 global gems bundler 1 1 5 lib bundler spec s
  • 如何在 Rails 中将随机日期时间四舍五入到小时开始?

    基本上我想获得去年内的随机日期时间 rand 1 year ago gt Sun 22 Sep 2013 18 37 44 UTC 00 00 example 但是我该如何指定或限制这个时间呢 例如 Sun 22 Sep 2013 18 0
  • 如何在 Rails 3 项目中包含 SSL 证书

    我开发了一个 Rails 3 项目 它使用thin作为服务器 与 Devise 和 Doorkeeper 一起进行身份验证 我想在我的项目中添加 SSL 证书 我看过一些描述如何在 Rails 3 项目中使用 SSL 证书的帖子 但没有一个
  • Ruby/Rails - 访问“查找”表而不对其进行建模?

    这是针对 Ruby on Rails 3 0 x 项目的 我有一个 查找 表 其中包含来自供应商的数据 当我从其他来源导入数据时 我想检查此表 加入 SKU 以获取额外数据 在我的应用程序中为该表创建模型对我来说似乎不合适 我的应用程序永远
  • 适用于移动应用程序的 Rails REST API。会议

    我正在创建一个移动应用程序 该应用程序拥有用户并与后端的自定义 Rails REST API 进行通信 我应该在登录时创建会话吗 或者我应该在每个请求中发送用户名和密码 如果会议是可行的方法 那么通常是如何实施的 只需生成令牌 并使用它们来

随机推荐