【问题标题】:emberjs rails submitting in controller without modelemberjs rails 在没有模型的控制器中提交
【发布时间】:2013-03-01 23:33:53
【问题描述】:

我是在 Rails 上使用的 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 模型。

感谢您的帮助

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-02-02
        • 2012-10-01
        • 2014-08-01
        • 2012-12-31
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        相关资源
        最近更新 更多