Ruby on rails Rails 4.0参数缺失或值为空
我有一个具有嵌套资源链接的Opportunity模型。在“我的视图/机会/显示”页面中,当我单击其中一个链接的“销毁”时,我得到错误信息: 参数丢失或值为空:link 它抱怨的代码段是: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_
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也修复了这个问题。