我無法訪問我的實例變量。我的代碼如下:如何在我的部分中訪問我的實例變量
# controllers/locations_controller.rb
def index
if request.xhr?
neLat = data.dig('northeast', 'lat').to_f
neLng = data.dig('northeast', 'lng').to_f
swLat = data.dig('southwest', 'lat').to_f
swLng = data.dig('southwest', 'lng').to_f
@markers = Location
.where("lat <= ?", neLat)
.where("lng <= ?", neLng)
.where("lat >= ?", swLat)
.where("lng >= ?", swLng)
end
respond_to do |format|
format.html
format.json {render :json => @markers}
format.js
end
end
# view/locations/_map.html.erb
$.ajax({
url: '/location.json',
type: 'GET',
contentType: "application/json; charset=utf-8",
data: {
"northeast": bounds.getNorthEast().toJSON(),
"southwest": bounds.getSouthWest().toJSON(),
}
})
.done(function(data) {
// EDIT HERE
console.log(data)
console.log(<%= @markers %>)
// END OF EDIT
$('.results').html("<%= j render 'locations/location_results' %>")
});
當我CONSOLE.LOG(數據)後,我的阿賈克斯已經成功地完成我得到我預期的結果,但是當我CONSOLE.LOG(<%= @markers%>)我得到空的結果。我如何可以訪問我的實例變量\
編輯:
所以我最終從我的控制器傳遞一個哈希我的看法是這樣的:
# controller
renderPartial = render_to_string :partial => 'locations/location_results.html.erb'
respond_to do |format|
format.html
format.json {render :json => {markers: @markers, partial: renderPartial}}
end
# view
.done(function(data) {
if (data) {
$('.results').html(data.partial)
return addMarkers(data.props)
}
})
這讓我使我的部分並可以使用erb訪問我的實例變量,並在javascript中使用回調變量。
你在哪裏記錄實例var?我沒有看到你的代碼? –
@PamioSolanky - 我已經更新了我的代碼。我在我的.done方法中記錄我的數據 – ManeOfThrones