销毁操作错误:未找到参数:链接

时间:2014-03-28 23:43:57

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

我正在建立一个模拟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?' } %>

我真的很困惑,尝试过很多东西,却无法让它发挥作用。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

你的问题是:

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

您需要以下内容:

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

发生了什么?您的销毁链接正在向某个网址发送DELETE请求,例如/ link / 23,其中23为params[:id]。在销毁之前,您需要使用Link.find(params[id])找到相应的链接对象(类似于show中的方式)。

答案 1 :(得分:0)

看起来你的许可证丢失了:id和你的销毁在find子句中缺少params [:id]。