AJAX rails更新地理编码器距离实例变量

时间:2014-04-07 18:53:28

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

我有一个实例变量@lat_lng,我需要每隔3秒刷新一次。我正在尝试使用respond_to AJAX请求。

welcome/_info部分

中的变量
#distance
  =number_with_precision(event.distance_to(@lat_lng), precision: 2)

用户更新表单上的纬度和经度,然后将表单发送到cookie。然后,我将分割cookie以获取地理编码器distance_to请求的纬度和经度。这是我的welcome_controller

@lat_lng = cookies[:lat_lng] ? cookies[:lat_lng].split("|") : nil

然后我在application.js文件

中创建了一个AJAX请求
var ajax_update_latlng = function(){
  $.ajax({
    url: '/welcome/refresh'
  })
}

$(function(){
  setInterval(ajax_update_latlng, 3000)
});

/welcome/refresh正在显示GET http://localhost:3000/welcome/refresh 500 (Internal Server Error)

日志文件显示

Started GET "/welcome/refresh" for 127.0.0.1 at 2014-04-07 15:09:51 -0400
Processing by WelcomeController#refresh as */*
  Rendered welcome/_info.html.haml (11.3ms)
  Rendered welcome/refresh_latlng.js.haml (12.2ms)
Completed 500 Internal Server Error in 18ms

NameError - undefined local variable or method `event' for #<#<Class:0x007fdbeb4255d0>:0x007fdbeb430958>:

我的欢迎控制器中有刷新操作

  def refresh
    respond_to do |format|
      format.js {render :action =>"refresh_latlng.js" }
    end
  end 

这会呈现javascript文件refresh_latlng.js

$('#distance').html("#{escape_javascript(render 'welcome/info', data: @lat_lng)}");

我不知道它为什么找不到它,我也希望它更新我的控制器中的变量,因为我也在另一个区域使用该变量。

删除了rake routes,因为它无关紧要。

看起来它正在刷新我的事件变量,当它刷新时给它服务器错误(500)。这是部分从欢迎控制器中拉出的地方。

def index
    @events = Event.all
    @lat_lng = cookies[:lat_lng] ? cookies[:lat_lng].split("|") : nil
    @locations= Event.where( "start = ?", Date.today).all
    @hash = Gmaps4rails.build_markers(@locations) do |location, marker|
      marker.lat location.latitude
      marker.lng location.longitude
      marker.infowindow render_to_string(:partial => "info", :locals => { :event => location }) <--this is pulling the info partial
      marker.picture({
        "url" => "https://addons.cdn.mozilla.net/img/uploads/addon_icons/13/13028-64.png", 
        "width" => 32, 
        "height" => 37 
      })
    end

完整_info部分

.event-data{id: event.id}
  .row
    .small-3.columns.mright
      .avatar
        %img.avatar{:src => event.user.avatar(:thumb), class: 'th'}
    .small-6.columns.mleft.left-border
      .name
        %strong
          = event.user.name
      .address
        = event.address
      .times  
        = event.start.strftime('%I:%M')
        to
        = event.end.strftime('%I:%M') 

    .small-2.columns.left-border
      .distance
        =number_with_precision(event.distance_to(@lat_lng), precision: 2)
        %br
        miles away

0 个答案:

没有答案