【问题标题】:Redirect_to 'category_products_path' after destroy not working (:category_id not given)销毁后重定向到'category_products_path'不起作用(:未给出category_id)
【发布时间】:2018-07-26 18:59:36
【问题描述】:

我试图在@product.destroy 之后重定向_to category_products,但我无法获得:category_id。我不知道如何在没有 :category_id 的情况下重定向回 product#index。下面是我的 products_controller.rb、rake 路由和错误消息 - 有人知道快速修复吗?

products_controller.rb(销毁)

def destroy
    @category = Category.find(params[:category_id])
    @product = Product.find(params[:id])
    @product.destroy
    respond_to do |format|
      format.html { redirect_to category_products_path(@category), notice: 'Pro$
      format.json { head :no_content }
    end
 end

耙路线:

category_products GET    /categories/:category_id/products(.:format)                                              products#index

错误:“找不到没有 ID 的类别”

【问题讨论】:

  • 试试redirect_to category_products_path(params[:category_id])
  • @JagdeepSingh - 没有 params[:category_id],这就是 Belvin 收到 find 错误的原因。根据 Belvin 之前的帖子,我认为他们使用的是浅嵌套路由。
  • “在@product.destroy 之后尝试重定向_to category_products” - 从这里开始,我假设,destroy 工作正常。问题在于销毁操作的响应中的重定向。这 “我不知道如何在没有 :category_id 的情况下重定向回 product#index” 也表示相同。

标签: ruby-on-rails ruby


【解决方案1】:

如果您查看您的参数,您会发现没有 params[:category_id],因为您使用的是浅嵌套。

试试类似的东西:

def destroy
  @product = Product.find(params[:id])
  @category = @product.category
  @product.destroy
  respond_to do |format|
    format.html { redirect_to category_products_path(@category), notice: 'Pro$
    format.json { head :no_content }
  end
end

这自然假设Product belongs_to :category

(我忽略了尾随的$,因为您的编辑器或复制粘贴似乎有问题。)

【讨论】:

  • 做到了,谢谢。是的,产品属于_to :category。我不知道如何引用@product.category - 现在一切都说得通了,谢谢。
  • 当然可以。你会得到它的窍门。顺便说一句,一如既往,请随时为未来的搜索者投票/接受。
  • “如果你查看你的参数,你会发现没有 params[:category_id] 因为你使用的是浅嵌套。” - 你在哪里看到参数和浅嵌套的提及?
  • @JagdeepSingh - 好问题!韦尔普。首先,很明显params[:category_id] 不存在,因为@category = Category.find(params[:category_id]) 抛出"Couldn't find Category without an ID"。所以,不需要看到params 就知道category_id 不存在。其次,category_products_path 表示嵌套,没有params[:category_id] 表示浅嵌套。但是,我也看到了 Belvin 之前讨论过浅嵌套的问题 - 所以我有点作弊了。
猜你喜欢
  • 1970-01-01
  • 2018-12-05
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2023-04-08
  • 2022-10-19
  • 1970-01-01
相关资源
最近更新 更多