在我的Rails应用程序中,我将一个变量传递给此调用:$.get("/parent_submissions/", {submission: d.id}, null, "script");
,我希望submission
变量传递给通过控制器加载的部分。通过/ parent_submissions /路由的控制器操作是:
def parent
@submission = Submission.find(params[:submission])
end
该操作加载了parent.js.erb,如下所示:
$("body").append( "<%=j render :partial => 'parent', :locals => {:submission => @submission } %>" );
_parent.html.erb看起来像这样:
<h1>@submission.title</h1>
我在我的控制台中查看了调用get请求时会发生什么,它看起来像这样:
Processing by SubmissionsController#parent as JS
Parameters: {"submission"=>"190", "_"=>"1378443591336"}
这意味着提交值不为null,并且正确地通过请求传递正确的提交ID。但是当渲染部分时,它看起来像@submission.title
。
我认为控制器出了问题。有什么想法吗?
答案 0 :(得分:3)
您需要将部分内的<h1>@submission.title</h1>
更改为<h1><%= @submission.title %></h1>
。
答案 1 :(得分:1)
如果您要使用实例变量,则没有理由在本地散列中传递它。
所以这一行:
$("body").append( "<%=j render :partial => 'parent', :locals => {:submission => @submission } %>" );
可能只是:
$("body").append( "<%=j render :partial => 'parent' %>" );
如果您想使用本地人,您的部分需要如下:
<h1><%= submission.title %></h1>