Ruby on rails Rails 4.0参数缺失或值为空

Ruby on rails Rails 4.0参数缺失或值为空,ruby-on-rails,params,Ruby On Rails,Params,我有一个具有嵌套资源链接的Opportunity模型。在“我的视图/机会/显示”页面中,当我单击其中一个链接的“销毁”时,我得到错误信息: 参数丢失或值为空:link 它抱怨的代码段是: def link_params params.require(:link).permit(:description, :link_url) end 这是我的销毁代码: def destroy @opportunity = Opportunity.find(params[:opportunity_

我有一个具有嵌套资源链接的Opportunity模型。在“我的视图/机会/显示”页面中,当我单击其中一个链接的“销毁”时,我得到错误信息:

参数丢失或值为空:link

它抱怨的代码段是:

def link_params
     params.require(:link).permit(:description, :link_url)
end
这是我的销毁代码:

def destroy
  @opportunity = Opportunity.find(params[:opportunity_id])
  @link = @opportunity.links.find(link_params)
  @link.destroy
  respond_to do |format|
    format.html { redirect_to links_url, notice: 'Link was successfully destroyed.' }
    format.json { head :no_content }
end
更改此项:

 @link = @opportunity.links.find(link_params)
为此:

 @link = @opportunity.links.find(params[:id])
您的参数中没有
链接
,您只有
id
opportunity\u id

此外,您还有:

respond_to do |format|
   format.html { redirect_to links_url, notice: 'Link was successfully destroyed.' }
...
end
我猜您的
链接
资源嵌套在
商机
中。因此没有
链接\u url
。您需要使用,即
商机链接\u url(@opportunity)

最后,请注意,您可能需要
opportunities\u links\u path
,而不是
opportunities\u links\u url
,除非在此实例中明确需要绝对url

您可以通过运行
rake routes
来发现您的链接助手。最左边“prefix”列中的所有内容都可以在末尾使用
\u url
\u path
来调用,以生成url。

更改此设置:

 @link = @opportunity.links.find(link_params)
为此:

 @link = @opportunity.links.find(params[:id])
您的参数中没有
链接
,您只有
id
opportunity\u id

此外,您还有:

respond_to do |format|
   format.html { redirect_to links_url, notice: 'Link was successfully destroyed.' }
...
end
我猜您的
链接
资源嵌套在
商机
中。因此没有
链接\u url
。您需要使用,即
商机链接\u url(@opportunity)

最后,请注意,您可能需要
opportunities\u links\u path
,而不是
opportunities\u links\u url
,除非在此实例中明确需要绝对url

您可以通过运行
rake routes
来发现您的链接助手。最左边“prefix”列中的所有内容都可以在末尾使用
\u url
\u path
来调用,以生成url。

我也有同样的错误。 在执行操作之前,必须使用:顶部的链接参数, 相反,在操作:链接参数之前执行此操作:[:create]

我遇到了相同的错误。 在执行操作之前,必须使用:顶部的链接参数,
相反,在_action:link _params之前执行此操作:[:create]

仅显示销毁链接的代码。这些参数通常仅用于更新模型实体的属性(除了
params[:id]
以查找对象)。在销毁操作中,通常没有从客户端发送对象属性,那么为什么在销毁操作中使用
link\u params
?我已使用销毁代码@gwcofeybe进行了更新,因为没有它,我会得到错误未定义的局部变量或方法`links\u url'@joniplease也会显示参数散列的外观。此外,通常
params.require
方法仅在rails模型使用params更新时使用。当您只是从哈希中选择一个值进行搜索时,您不需要这个,您只需执行
parmas[:link][:description]
显示销毁链接的代码。参数通常仅用于更新模型实体的属性(除了
params[:id]
以查找对象)。在销毁操作中,通常没有从客户端发送对象属性,那么为什么在销毁操作中使用
link\u params
?我已使用销毁代码@gwcofeybe进行了更新,因为没有它,我会得到错误未定义的局部变量或方法`links\u url'@joniplease也会显示参数散列的外观。此外,通常
params.require
方法仅在rails模型使用params更新时使用。当您只是从哈希中选择一个值进行搜索时,您不需要这个,您只需执行
parmas[:link][:description]
我尝试了这一点,结果出现了错误:代码段格式的未定义局部变量或方法'links\u url'。html{重定向到links\u url,注意:'链接已成功销毁。}@gwcofeyrevised也修复了这一问题。我尝试了这一点,结果出现了错误:代码段格式的未定义局部变量或方法'links\u url'{重定向到links\u url,注意:'链接已成功销毁。}@gwcofeyrevised也修复了这个问题。