OK、これはフラストレーションの別の演習です。私は一生、何が悪いのか理解できません。
コントローラ:
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) が返されますが、これは -1 の ID が返されているため理解できますが、console.log(data) が生徒のデータを記録していて記録していない理由にはなりません。件名。これは非常に不可解だと思います。また、明らかに送信されているキー「グレード」がコントローラに表示されないのはなぜですか? さらに、params ハッシュにキーが存在するかどうかをテストする別の方法 (よく読んでください) はありますか? 一言で言えば、これが実際に機能するために、ここで何が間違っているのでしょうか?
ティア