缺少Rails 4.0参数或值为空

Tru*_*ran 1 ruby-on-rails params

我有一个具有嵌套资源链接的Opportunity模型.在我的views/opportunities/show页面中,当我点击其中一个链接的"DestroY"时,我收到错误:

param丢失或值为空:link

它抱怨的代码片段是:

def link_params
     params.require(:link).permit(:description, :link_url)
end
Run Code Online (Sandbox Code Playgroud)

这是我的破坏代码:

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
Run Code Online (Sandbox Code Playgroud)

gwc*_*fey 7

改变这个:

 @link = @opportunity.links.find(link_params)
Run Code Online (Sandbox Code Playgroud)

对此:

 @link = @opportunity.links.find(params[:id])
Run Code Online (Sandbox Code Playgroud)

link在你的参数中没有一个,你只有一个id和一个opportunity_id.

另外,你有这个:

respond_to do |format|
   format.html { redirect_to links_url, notice: 'Link was successfully destroyed.' }
...
end
Run Code Online (Sandbox Code Playgroud)

我猜你有links资源嵌套在里面opportunities.所以没有links_url.你需要使用,即opportunities_links_url(@opportunity).

最后,请注意您可能希望opportunities_links_path而不是opportunities_links_url除非您在此实例中明确需要绝对URL.

您可以通过运行发现您的链接助手rake routes.最左边的"前缀"列中的所有内容都可以使用_url_path在末尾调用以生成URL.