Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 设计-定制用户#新方法 def新建 @title=“创建用户” @user=user.new 结束_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1_Devise - Fatal编程技术网

Ruby on rails 设计-定制用户#新方法 def新建 @title=“创建用户” @user=user.new 结束

Ruby on rails 设计-定制用户#新方法 def新建 @title=“创建用户” @user=user.new 结束,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,devise,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Devise,当我尝试提交表单以创建新用户时,我会收到一条消息“您已登录”。而该用户未被创建。可能有什么问题?如我的评论中所述,您必须告诉Desive您希望使用自定义控制器进行注册,因此它知道不使用其默认行为 因为你想限制用户公开注册,我想(我没有测试这个)你必须创建你自己的自定义注册控制器,它做的事情和设计默认控制器一样,除非用户已经登录。。。我不确定(非公开)注册完成后会发生什么。因为Desive会尝试自动让您登录-这取决于您是否使用confirmable。。。但我猜你会以老用户身份注销,以新用户身份登录

当我尝试提交表单以创建新用户时,我会收到一条消息“您已登录”。而该用户未被创建。可能有什么问题?

如我的评论中所述,您必须告诉Desive您希望使用自定义控制器进行注册,因此它知道不使用其默认行为

因为你想限制用户公开注册,我想(我没有测试这个)你必须创建你自己的自定义注册控制器,它做的事情和设计默认控制器一样,除非用户已经登录。。。我不确定(非公开)注册完成后会发生什么。因为Desive会尝试自动让您登录-这取决于您是否使用confirmable。。。但我猜你会以老用户身份注销,以新用户身份登录

因此,为了给您提供指导,您应该阅读自述部分。 然后,您可以尝试简单地添加before_过滤器,以验证自定义注册控制器中的用户(假设您的用户模型名为
user
):

class MyRegistrationController

但是再一次。我没有测试这个。。。因此,也许这不是解决问题的方法,但值得一试:)

据我所知,您不能只使用自定义方法,您需要为注册提供一个完整的自定义控制器。你到底想实现什么?我希望只有当你登录时才能创建用户——他们是已经登录的同一类型的用户,还是你在谈论子帐户,比如视频游戏世界中的XBox Live和PS3/PSN?无论如何,我认为你需要用更多的词来描述你想要做什么。埃里克:他们都是相同的用户,我没有使用瓦皮雷的建议,而是覆盖了注册控制器;)我在\u过滤器之前添加了:验证\u用户!对于我的UsersController,但没有任何更改,这就是我尝试创建新用户的地方。您是否告诉Desive在路由文件中使用您的UsersController作为其注册控制器?你做了自述文件中提到的所有事情了吗?为:用户,:控制器=>{:注册=>“用户/新”}设计好。。。在此配置中,Desive正在目录
controllers/Users
中寻找名为
Users::NewController
的注册控制器。您必须提供整个控制器(=类),而不是单一方法!阅读自述!所以没有办法在自己的控制器中创建用户?
def new
     @title = "Create a user"
     @user = User.new
end

<%= form_for(@user) do |f| %>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email%>
  </div>
  <div class="field">
    <%= f.label :password %><br />
    <%= f.password_field :password %>
  </div>
  <div class="field">
    <%= f.label :password_confirmation, "Confirmation" %><br />
    <%= f.password_field :password_confirmation %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
class MyRegistrationsController < Devise::RegistrationsController
  before_filter :authenticate_user!
end