好的,这是另一个挫折练习。我终其一生都无法弄清楚出了什么问题。
控制器:
class MapController < ApplicationController
layout "map"
def index
if params.has_key? :grade
@students = Student.find(:grade => params[:grade])
@subjects = Subject.where(:grade => @students.map(&:grade))
else
@students = Student.all
@subjects = Subject.all
end
@json = @students.to_gmaps4rails do |student, marker|
marker.infowindow render_to_string(:partial => "/map/infowindow", :locals => {:student => student})
marker.title "#{student.name}"
marker.json({:address => student.full_address, :grade => student.grade, :subjects => student.subjects})
end
respond_to do |format|
format.html
format.xml {render :xml => @subjects.to_xml}
format.json {render :json => @subjects.to_json}
end
end
end
咖啡脚本:
jQuery ->
$(".mapDataGrade").append "<option value=-1>-</option>"
$(".mapDataGrade").append "<option value=#{i}>#{i}</option>",
i for i in [8..12]
$(".mapDataSubject").append "<option value=-1>-</option>"
grade = "grade": "#{$('.mapDataGrade').val()}", tagmode: "any", format: "json"
$.getJSON "map.json",
grade,
(data)->
console.log(data)
$('.mapDataSubject').find('option').remove().end()
$(".mapDataSubject").append "<option value=-1>-</option>"
$.each data.items, (i,item) ->
$(".mapDataSubject").append "<option value=#{i}>#{i}</option>"
现在第一部分工作得很好,它的 .getJson 不是。在第一个页面加载时,它返回一个内部服务器错误(500),这是可以理解的,因为返回的 id 为 -1,但这仍然不能解释为什么 console.log(data) 正在记录学生数据而不是主题。这我觉得非常令人费解。另外,为什么控制器看不到明显正在发送的关键“等级”?此外,是否有另一种方法(更好地阅读)来测试参数哈希中是否存在密钥?简而言之,这里有什么问题才能真正起作用?
TIA