【问题标题】:Destroy action error: param not found: link销毁操作错误:找不到参数:链接
【发布时间】:2014-03-28 23:43:56
【问题描述】:

我正在构建 reddit 的模型。在显示我提交的链接和标题的显示视图中,我包含了一个选项(链接)来销毁提交。

当我点击销毁时,我得到:

ActionController::ParameterMissing in LinksController#destroy
param not found: link

上线:

params.require(:link).permit(:url, :title)

这是我的完整链接控制器:

class LinksController < ApplicationController

    def index
      @link = Link.all
    end

    def show
      @link = Link.find(params[:id])
    end

    def new
      @link = Link.new
    end

    def create
      @link = Link.new(link_params)
        if @link.save
            redirect_to @link 
        else
            render action: 'new'
        end
    end

    def destroy
      @link = Link.find()
      if @link.destroy
        redirect_to index: 'action'
      else
        render show: 'action'
      end
    end


private
    def link_params
      params.require(:link).permit(:url, :title)
    end


end

这是我的表演视图:

<h1> This is the show view </h1>


        <%= @link.title %>
        <%= @link.url %>
        <%= link_to 'Edit', edit_link_path(@link) %>\
        <%= link_to 'Destroy', (@link), method: :delete, data: { confirm: 'Are you sure?' } %>

我真的很困惑,尝试了多种方法但无法正常工作。我该如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 controller destroy


    【解决方案1】:

    看起来你 permit 缺少 :id 并且你的 destroy 在 find 子句中缺少 params[:id]。

    【讨论】:

    • 这是有道理的,但现在我收到一条错误消息:“找不到 id=11 的链接”或该特定链接对象的任何 id。
    • 请在“rails 控制台”中仔细检查那些 Link.find(...) 语句。
    • 这对我有什么帮助?我有点困惑如何从控制台获得的结果可以帮助我在这种特殊情况下找到解决方案。
    • 只是缩小问题范围的步骤。当索引视图加载时,通过控制台确认视图中存在 id。然后调用删除。坦率地说,我不明白这是怎么发生的。也许还可以查看日志,是否调用了两次,第一次成功,第二次失败。只是一些猜测工作。远距离无法分辨。如果问题仍然存在,请将其放在公共 github 存储库中以供审查。
    【解决方案2】:

    你的问题是:

    def destroy
      @link = Link.find()
      ...
    

    你需要这样的东西:

    def destroy
      @link = Link.find(params[:id])
    

    发生的情况是您的 Destroy 链接正在向 /link/23 等 URL 发送 DELETE 请求,其中 23 为 params[:id]。您需要在销毁之前使用 Link.find(params[id]) 找到适当的 Link 对象(类似于在 show 中的操作)。

    【讨论】:

    • 这是有道理的,但现在我收到一条错误消息:“找不到 id=11 的链接”或该特定链接对象的任何 id。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多