我正在建立一个模拟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?' } %>
我真的很困惑,尝试过很多东西,却无法让它发挥作用。我该如何解决这个问题?
答案 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]。