【问题标题】:Pass Rails variable through AJAX to partial?通过AJAX将Rails变量传递给部分?
【发布时间】:2013-09-10 02:40:26
【问题描述】:

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

这意味着提交值不为空,并且通过请求正确传递了正确的提交ID。但是当部分被渲染时,它看起来就像@submission.title。

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

【问题讨论】:

  • 这是 ERB。你没有错过什么吗?应该是&lt;%= @submission.title %&gt;。
  • @Casper - 是的,我觉得自己像个健忘的白痴。谢谢!

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


【解决方案1】:

您需要将部分中的&lt;h1&gt;@submission.title&lt;/h1&gt; 更改为&lt;h1&gt;&lt;%= @submission.title %&gt;&lt;/h1&gt;。

【讨论】:

    【解决方案2】:

    如果您要使用实例变量,则没有理由将其传递到本地哈希中。

    所以这一行:

    $("body").append( "<%=j render :partial => 'parent', :locals => {:submission => @submission } %>" );
    

    可能是:

    $("body").append( "<%=j render :partial => 'parent' %>" );
    

    如果你想使用本地人,你的部分需要如下:

    <h1><%= submission.title %></h1>
    

    【讨论】:

    • 请通过在适当的地方回答来听到声誉积分。
    • Carnway,我不相信最后一部分一定是正确的;如果他没有使用 :locals 哈希,那么他仍然需要@。除非我错过了什么?如果他确实使用了 :local,那么是的,他可以按照您的描述访问它。
    • 最后一部分假设他将通过局部哈希传递变量,这意味着在部分内部submission变量引用控制器中定义的@submission。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2011-06-09
    • 1970-01-01
    • 2013-03-05
    • 2015-04-28
    • 2016-05-08
    • 1970-01-01
    相关资源
    最近更新 更多