我在访问实例变量时遇到问题。我的代码如下:
# 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' %>")
});
当我的Ajax成功完成后,当我console.log(data)时,我得到了预期的结果,但是当我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中使用回调变量。
因此,我最终将哈希从控制器传递给视图,如下所示:
# 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中使用回调变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句