/ / szyny emberjs przesyłane w kontrolerze bez modelu - ruby-on-rails-3, formularze, sesja, kontroler, ember.js

szyny emberjs przesyłane w kontrolerze bez modelu - ruby-on-rails-3, formularze, sesja, kontroler, ember.js

Jestem nowy w emberjs (1.0.0-RC1), którego używam na szczycie szyn. Chcę przesłać formularz sesji bez użycia modelu ember. Wydaje mi się, że jest to lepsze, ponieważ w mojej aplikacji nie ma prawdziwego modelu sesji. Na razie to działa jest następujący:

#login_controller.js.coffee
SkillUp.LoginController = Ember.ObjectController.extend
# Just a title to pass to the template, for fun
title: "Login Controller"

submit: (controller) ->
model = @get "model"
model.get("transaction").commit()

#session.js.coffee
SkillUp.Session = DS.Model.extend
email: DS.attr "string"
password: DS.attr "string"

#login_route.js.coffee
SkillUp.LoginRoute = Ember.Route.extend
setupController: (controller) ->
controller.set "title", "Login"

controller.set "content", SkillUp.Session.createRecord()

<!-- login.handlebars -->
<h2>template: {{title}}</h2>
<form>
{{#with controller}}
email: {{view Ember.TextField valueBinding="email"}}
password: {{view Ember.TextField valueBinding="password" type="password"}}
<button {{action submit}}>Submit</button>
{{/with}}
</form>

Jak powiedziałem, moim celem jest usunięcie session.js.coffee, ponieważ nie istnieje dla niego model szyny.

Dziękujemy za pomoc

Odpowiedzi:

1 dla odpowiedzi № 1

Nie polecam wdrażania $.ajax bezpośrednio. Zalecam zachowanie modelu DS. To powinno ułatwić testowanie, jeśli używasz DS.FixtureAdapter. Idealnie powinieneś trzymać wszystkie ajax za warstwą w aplikacji. Nie powinieneś wpadać $.ajax w różnych częściach aplikacji.

EDYCJA: tylko dlatego, że nie masz modelu sesji w backendu, nie oznacza, że ​​nie możesz mieć go w interfejsie. Aplikacja ember będzie miała własne modele. Nie przejmuj się mapowaniem 1: 1.


0 dla odpowiedzi nr 2

Możesz po prostu użyć $ .ajax w metodzie kontrolera, aby ręcznie wysłać wartości do szyn przy użyciu jQuery.

$.ajax("/sessions", {
type: "POST",
data: {
email: this.get("email"),
password: this.get("password)
},
...
});

Dodaj odpowiednie procedury obsługi dla sukcesu i niepowodzenia.