liente @BackBone con un servidor Rails remoto
Antecedentes
Uso "rails g scaffold hotel name stars: integer" para comenzar rápidamente (e insertar algunos registros en la base de datos) y escribir un cliente Backbone fuera de la aplicación rails.
Abro el cliente Backbone localmente con el archivo Safari: ///Users/lg/Workspace/www/index.html para probar el cliente porque mi idea es poner el servidor rails en un host (por ejemplo, Heroku) e insertar el Backbone cliente en una aplicación PhoneGap.
Mi cliente backbone es solo unas pocas líneas:
Hotel = Backbone.Model.extend({
initialize: function(){
console.log("initialize Hotel")
}
});
Hotels = Backbone.Collection.extend({
model: Hotel,
url: 'http://0.0.0.0:3000/hotels'
});
Pero cuando busco hoteles con backbone, los rieles responden con format.html y no el format.json que Backbone puede analizar.
hotels_controller.rb
# GET /hotels
# GET /hotels.json
def index
@hotels = Hotel.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @hotels }
end
end
onsola de inspector de @Safari:
hotels = new Hotels()
Object
hotels.fetch()
Object
hotels.length
0
Request URL:http://0.0.0.0:3000/hotels
Request method:GET
Status code:200 OK
Request Headers
Accept:application/json, text/javascript, */*; q=0.01
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10
Response Headers
Cache-Control:max-age=0, private, must-revalidate
Connection:Keep-Alive
Content-Length:2233
Content-Type:text/html; charset=utf-8
Date:Sat, 11 Feb 2012 14:31:52 GMT
Etag:"606da2b7c21ca96c9d71aabccdd439e9"
Server:WEBrick/1.3.1 (Ruby/1.9.2/2011-07-09)
EDITAR Actualizado con url establecido en url: "http://0.0.0.0:3000/hotels.jso
puede ponerse al día pero no puede hacer que otros sean CRUDOS (ejemplo PUT)
hotels = new Hotels()
Object
hotels.fetch()
Object
hotels.length
5
hotel = hotels.get(2)
Object
hotel.set({name: "name 2"})
Object
hotel.save()
Object
PUT http://0.0.0.0:3000/hotels.json/2 404 (Not Found)
En cambio, si configuro solo / hoteles, funciona (pero el cliente principal debe residir en el servidor)
EDIT 2:
subió el código en github
https: //github.com/RevH/backbonefail
EDIT 3:
Otros detalles son si inserta el directorio del cliente backbone en el directorio público de Rails y cambia 0.0.0.0:3000/hotels.json a / hotels, ¡funciona fantástico! Pero si separo el cliente del servidor y lo abro con Safari, se requiere .json al final de la url. Esto es muy extraño
i abro un problema de rieles en github enhttps: //github.com/rails/rails/issues/500