2012-01-25 2 views
0

JQuery와 UI 슬라이더를 사용할 때 나는 아래의 오류 받고 있어요 동안 아약스를 통해 갱신 :Rails3 AJAX 오류 - Fixnum이라는위한 정의되지 않은 메서드`MODEL_NAME ': 클래스

ActionView::Template::Error (undefined method `model_name' for Fixnum:Class): 
1: $("#x_stock_list").html("<%= escape_javascript(render(@date_range)) %>"); 
app/views/home/index.js.erb:1:in`_app_views_home_index_js_erb__1074827181885368454_2504361900' 

내 JQuery와 슬라이더의 기능은 다음과 같습니다

def index 
    unless params[:weeks] 
     @date_range = 4 
    else 
     @date_range = Home.filter(params[:weeks]) 
    end 
    end 

그리고 내 모델 : 내 집 컨트롤러에서

<script type="text/javascript"> 
$(function() { 
    $("#x_slider").slider({ 
    range: true, 
    step: 1, 
    min: 1, 
    max: 52, 
    values: [1, 52 ], 
    stop: function(event, ui) { 
     var url_param = $('#x_slider').slider('option', 'values'); 
     $('#x_low_selected').html(ui.value);  
     $.ajax({ 
     type: "GET", 
     data: ({ weeks: url_param[0] }), 
     url: $(this).attr('data-href'), 
     dataType: 'script' 
     }); 
    } 
    }); 
}); 
</script> 

,이이

01 내하는 index.js
$("#x_stock_list").html("<%= escape_javascript(render(@date_range)) %>"); 

내가 슬라이더를 드래그

에 마지막으로
def self.filter(weeks) 
    timeago = weeks.to_i 
    end 

23,516,는 값이 잘 표시됩니다

Parameters: {"weeks"=>"8", "_"=>"1327514933685"} 

는 그 오류가 발생하지만.

수동으로 URL을 탐색하면 http://localhost:3000/?weeks=9 모두 정상적으로 작동합니다.

누군가 내가 여기서 잘못하고있는 것을 설명 할 수 있습니까?

답변

4

render 메서드는 여기에 필요하지 않습니다. 목적은 부분, 파일 또는 텍스트를 렌더링하는 것입니다. 숫자 4를 전달 중입니다.

숫자에 대해 escape_javascript은 gsub에 응답하는 클래스를 예상하므로 필요하지 않습니다.

#From the above link:  
result = javascript.gsub(%r(\\|<\/|\r\n|\3342\2200\2250|[\n\r"'])/) {|match| JS_ESCAPE_MAP[match] } 
javascript.html_safe? ? result.html_safe : result 

사용 다음 중 하나를

$("#x_stock_list").html("<%= @date_range %>"); 

또는 문자열로 변환 :

$.getJSON('traffic_sources.json', null, function(data) { 
    pie_chart("traffic_sources_graph", data.traffic_sources); 
}); 

function pie_chart(div, data) 
{ 
    new Highcharts.Chart({ 
     chart: { 
     renderTo: div, 
     backgroundColor: '#dddddd' 
     }, 
     series: [{ 
     type: 'pie', 
     name: 'Browser share', 
     data: data 
     }] 
    }); 
} 
: 과거에 highcharts를 들어

$("#x_stock_list").html("<%= @date_range.to_s %>"); 

, 나는의 라인을 따라 뭔가를했을

+0

의미가 있습니다 - 변경되었지만 이제는 "ActionView :: T emplate :: Error (정의되지 않은 메소드 'gsub'for 11 : Fixnum) : "?! 이상한 – simonmorley

+1

그래, 당신은 escape_javascript도 필요하지 않습니다. – Gazler

+0

좋아, to_i 제거하고 그 고정하지만 내보기를 새로 고쳐야합니다 - 나는 변화를 반영하기 위해 다시로드해야 js 그래프 있습니다. S – simonmorley

관련 문제