emberjs rails在控制器中提交没有模型

时间:2013-03-01 23:33:54

标签: ruby-on-rails-3 forms session controller ember.js

我是emberjs(1.0.0-RC1)的新手,我在轨道上使用它。我想在不使用ember模型的情况下提交会话表单。我觉得这更好,因为我的rails应用程序中没有真正的会话模型。目前有效的是:

#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,因为它不存在rails模型。

感谢帮助

2 个答案:

答案 0 :(得分:1)

我不建议直接实施$.ajax。我建议保留DS模型。如果您使用DS.FixtureAdapter,这应该可以使测试更容易。理想情况下,您应该将所有ajax保留在应用程序中的图层后面。您不应该在应用程序的各个部分中放入$.ajax

编辑:只是因为你后端没有会话模型并不意味着你不能在前端有一个。 ember应用程序将拥有自己的模型。不要担心1:1的映射。

答案 1 :(得分:0)

您可以在控制器方法中使用$ .ajax手动使用jQuery将值发布到rails。

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

为成功和失败添加适当的处理程序。