JSONデータを返すFlickr APIから情報を取得するためのajax呼び出しがあります。ビューに JSON データの値を表示したいと考えています。これを行うには、jQuery でいくつかの innerHTML を編集します。私が抱えている問題は、データが未定義であるため、スコープの問題のように見えることです。
photo.js
jQuery(function() {
$('#<%=p[:id]%>').click(function (e) {
//ajax call to fetch photo info
var fetch_id = '<%=p[:id]%>';
var fetch_secret = '<%=p[:secret]%>';
$.ajax({
type: 'GET',
url: '/photos/fetch_info',
dataType: 'json',
data: { 'id' : fetch_id, 'secret' : fetch_secret },
success: function(data){
console.log(data) //returns Object
console.log(data.title) //returns appropriate title
//edit innerHTML of basic_modal
$('.basic_modal').html(
"<div id='modal_image'><%= escape_javascript(image_tag p[:url]) %></div><div id='photo_title'><%=data.title %></div>"
);
//load modal
$('.basic_modal').modal({
overlayClose:true
});
} //end success: function(result)
});
data.title をコンソールに出力すると、適切なタイトルが表示されます。ただし、HTML を編集して render を実行しようとすると<%=data.title %>
、未定義の変数/メソッド エラーが発生します。
ビューのモーダルにデータを表示する方法に関するヒントはありますか?
これが私のコントローラーです:
def fetch_info
@info = flickr.photos.getInfo(:photo_id => params[:id], :secret=> params[:secret])
respond_to do |format|
format.json { render :json => @info }
end
end