Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Ember.js/Rails/designe应用程序中处理用户注册_Ruby On Rails_Devise_Ember.js - Fatal编程技术网

Ruby on rails 在Ember.js/Rails/designe应用程序中处理用户注册

Ruby on rails 在Ember.js/Rails/designe应用程序中处理用户注册,ruby-on-rails,devise,ember.js,Ruby On Rails,Devise,Ember.js,我正在尝试在Rails 4上编写一个纯Ember.js应用程序,我对如何处理用户管理感到困惑。我最初的想法是使用纯服务器呈现模板(ERB)通过designe进行用户注册和登录,然后应用程序的其余部分将使用Ember框架 问题是Ember想要接管标记并控制整个视口。通过这种方式,我无法选择应用程序的哪些方面应该使用服务器呈现的Erb模板,哪些应该使用余烬逻辑 我看到了很多关于如何处理已经登录的用户的例子,这些用户看起来很有趣,有助于认证感知控制器,但我没有看到关于允许在Ember应用程序中实现完整

我正在尝试在Rails 4上编写一个纯Ember.js应用程序,我对如何处理用户管理感到困惑。我最初的想法是使用纯服务器呈现模板(ERB)通过designe进行用户注册和登录,然后应用程序的其余部分将使用Ember框架

问题是Ember想要接管标记并控制整个视口。通过这种方式,我无法选择应用程序的哪些方面应该使用服务器呈现的Erb模板,哪些应该使用余烬逻辑

我看到了很多关于如何处理已经登录的用户的例子,这些用户看起来很有趣,有助于认证感知控制器,但我没有看到关于允许在Ember应用程序中实现完整用户注册体验的教程或建议

从技术角度看,我没有找到正确的代码,或者从架构角度看,我不应该这样做,我是否遗漏了一些东西?

这与ember rails(0.12.0 w/1.0.0.rc3.3 ember源)、rails 4.0.0.rc1和Desive(rails4分支)一起使用

dev在这里

用户注册实际上不需要任何特殊处理。像对待其他模型一样对待用户注册,因为创建
用户
模型不需要身份验证。(但编辑或删除它需要身份验证。)

您的实现可能如下所示:

App.User = DS.Model.extend
  email: DS.attr 'string'
  password: DS.attr 'string'

App.UsersNewRoute = Em.Route.extend
  model: ->
    App.User.createRecord()

App.UsersNewController = Em.ObjectController.extend 
  create: ->
    @store.commit()

为简洁起见,跳过了错误检查、模板代码等。

这里是根据@heartsentwined的答案给出的参考,因为粘贴到注释中效果不太好。有关更多信息,请参阅评论。因为我的api返回用户json,所以我只传递它期望的格式

didCreate: function() {
  var user = App.Auth.get('_response').response.user;
  var auth = {auth_token: user.auth_token, id: user.id};
  App.Auth.get('_response').canonicalize(auth);
  App.Auth.trigger('signInSuccess');
}
更新: 我切换到ember模型,现在在调用
model.save()
(SignupController的
submit
操作)的同一位置执行此操作


以上的解决方案对我几乎有效,但不是很有效。以下是我们所做的工作:

didCreate: function() {
  var user = App.Auth.get('_response').response.user;
  App.Auth.signIn({
    data: {
      'email':    user.email,
      'password': this.get('password'),
      'remember': true
    }
  });
}

App.Auth.signIn在文档中被明确使用:

Ah-我的理念被扭曲了,我没有意识到问题比它看起来更简单。我想我被Desive的服务器端解决方案的复杂性蒙蔽了双眼,它有无数的视图/专业控制器/等等。谢谢!因此,在创建帐户后,服务器使用user+auth令牌进行响应,我们如何自动登录到ember auth?@heartsentwined如果您能回答@flynfish的问题,我将不胜感激!我有同样的问题。是否有一种方法可以使用令牌填充
ember-auth
,而无需专门调用API端点
ember-auth
?有效用例。等我有时间的时候,我会制作一个合适的公共API。目前:1。给
ember-auth
一个JSON,与您从
POST/sign-in
调用返回的JSON相同:
App.auth.get(“'u-response')。规范化(JSON)2。发送
signinsucess
事件:
App.Auth.trigger('signinsucess')
@heartsentwined@Brandon成功了,我在用户模型的
didCreate
方法上设置它:
didCreate:function(model){App.Auth.get('u response')。规范化(model);App.Auth.trigger('signinsucess');}
didCreate: function() {
  var user = App.Auth.get('_response').response.user;
  App.Auth.signIn({
    data: {
      'email':    user.email,
      'password': this.get('password'),
      'remember': true
    }
  });
}