Rails j使用本地渲染部分

时间:2015-09-20 03:08:38

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

我正在尝试使用Ajax渲染部分,我使用class TransportationController < ApplicationController respond_to :html, :js, :json 将相关的Javascript对象发送到部分。不幸的是,我在发送对象时遇到了问题而且我一直收到错误&#34;未定义的局部变量&#34;。

控制器:

function getRates(){
    $.ajax( {
      ...
      (code cut out that's irrelevant to question, but this request succeeds)
      ...

      success: function( json ) {
        json.prices.forEach(function(price){
                $("#my_list").append("<%= j render :partial => 'my_item', :locals => {price: price} %>");
            });
            ....    
};

create.js.erb

    ....
        <h1><%= price.display_name %></h1>
    ....

_my_item.html.erb

boost::is_convertible

错误:( NameError - 未定义的局部变量或方法`价格&#39;)

任何帮助解决这个问题将不胜感激!我以为我正确地做到了

4 个答案:

答案 0 :(得分:2)

没有必要在Ajax成功块中定义html视图,你可以让你的.js文件与控制器动作相关联,这将呈现部分html.Hope它将适合你。

答案 1 :(得分:0)

<强> create.js.erb 您可以更改并添加到此:

function getRates(){
    $.ajax( {
      ...
      (code cut out that's irrelevant to question, but this request succeeds)
      ...

      success: function( json ) {
        json.prices.forEach(function(price){
                $("#my_list").append("<%= j render :partial => 'my_item'");
                $("h1.price-display-name").last().text(price.display_name);
            });
            ....    
};

_my_item.html.erb:添加新的属性类

....
<h1 class="price-display-name"></h1>
....

答案 2 :(得分:0)

可能是这样的

function getRates(){
  $.ajax( {
    ...
    (code cut out that's irrelevant to question, but this request succeeds)
    ...

    success: function( json ) {
      json.prices.forEach(function(price){
        $("#my_list").append("<%= escape_javascript render(:partial => 'my_item', :locals => {:price => price}) %>");
        });
        ....    
};

答案 3 :(得分:0)