通过AJAX将Rails变量传递给部分?

时间:2013-09-06 05:07:23

标签: javascript jquery ruby-on-rails ruby ajax

在我的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

我认为控制器出了问题。有什么想法吗?

2 个答案:

答案 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>