2013-03-01 3 views
0

Я новичок в emberjs (1.0.0-RC1), который я использую поверх рельсов. Я хочу отправить форму для сеанса без использования модели ember. Я чувствую, что это лучше, потому что в моем приложении rails нет реальной модели сеанса. Пока что работает следующее:emberjs рельсы отправляются в контроллер без модели

#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> 

Как я сказал, что моя цель состоит в том, чтобы удалить session.js.coffee, так как модель рельсов не существует для него.

Помощь будет оценен спасибо

ответ

1

Я не рекомендую непосредственно использовать $.ajax. Я рекомендую хранить модель DS. Это должно облегчить тестирование, если вы используете DS.FixtureAdapter. В идеале вы должны держать все ajax за слоем в приложении. Вы не должны падать в $.ajax в различных частях приложения.

РЕДАКТИРОВАНИЕ: только потому, что у вас нет модели сеанса в бэкэнд, это не значит, что вы не можете иметь ее на интерфейсе. У ember-приложения будут свои собственные модели. Не беспокойтесь о картировании 1: 1.

0

Вы можете просто использовать $ .ajax в методе контроллера размещать значения рельсов с помощью JQuery вручную.

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

Добавить подходящих обработчиков для успеха и отказа.

Смежные вопросы