Новое для Rails, у меня есть приложение Ruby в моем home_controller.erb, которое возвращает значение JSON из MongoDB, и я сохранил его в переменной @tuple Variable.
Как распечатать ответ JSON на лицевой стороне. Любая помощь будет большой.
Кортеж = { "_ идентификатор": { "$ подъязычная": "565a8bf88ab8dc1cc6000006"}, "молния": "85009"}
Это мой код контроллера:
class HomeController < ApplicationController
def index
uri='mongodb://heroku_bv2wfp7x:[email protected]:51534/heroku_bv2wfp7x'
connection_variable=Mongo::Client.new(uri)
connection_variable[:mongoearthquakes].drop
puts "Connected to Mongo DataBase, Inserting data . . . . . "
$j=0
while $j < 9 do
// inserting data into MongoDB
$j+=1
end
result=connection_variable[:mongoearthquakes].find()
result.each do |tuple|
tuple=tuple.to_json
puts tuple
@data_to_be_printed=tuple
end
end
Мой файл index.html.erb:
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p>Hello world: </p>
</div>
<script>
angular.module('myApp', []).controller('myCtrl', ['$scope', '$http', function($scope, $http) {
$.ajax({
type: "GET",
url: "@data_to_be_printed",
dataType: "json",
success: function(data){
console.log(@data_to_be_printed)
}
});
}]);
</script>
</body>
</html>
Обычно добавляйте
render json: @data_to_be_printed
поскольку последняя строка вашего действия index
вернет структуру JSON, как вы ожидали.
Обычно путь в ajax должен быть маршрутом в route.rb, пожалуйста, сначала проверьте маршрут
В вашем index.html.erb
$.ajax({
type: "GET",
url: <%= home_index_path %>+".json",
dataType: "json",
success: function(data){
}
}
и добавить
respond_to do |format|
format.json { render json: @data_to_be_printed }
end
в действии индекса этого домашнего контроллера - home_controller.rb
rake routes
localhost:8000