rails – 设计 – 创建注册表

我一直在撞墙,试着了解如何让Devise与客户注册一起工作….

因此,在我的目标网页上,我想显示一个注册表单,因此我将其添加到我的视图中:

 

在那个部分我在视图中有一个表单标签,如下所示:

  user_registration_path) do |f| %> . . 

在我的应用程序布局中,我有:

  <div class="flash ">

我遇到的问题是当我提交带有无效参数的新注册表单时,我没有看到错误消息?

但是,如果我提交有效信息,表单确实说它有效,我需要查看我的电子邮件确认链接,这很好。

你能帮我理解如何让这个工作结束2-end所以我可以显示错误:

这是我的完整控制器:

  # GET /users/new # GET /users/new.xml # GET /users/new.json HTML AND AJAX #------------------------------------------------------------------- def new respond_to do |format| format.json { render :json => @user } format.xml { render :xml => @user } format.html end end # GET /users/1/edit # GET /users/1/edit.xml # GET /users/1/edit.json HTML AND AJAX #------------------------------------------------------------------- def edit respond_to do |format| format.json { render :json => @user } format.xml { render :xml => @user } format.html end rescue ActiveRecord::RecordNotFound respond_to_not_found(:json, :xml, :html) end # POST /users # POST /users.xml # POST /users.json HTML AND AJAX #----------------------------------------------------------------- def create @user = User.new(params[:user]) if @user.save respond_to do |format| format.json { render :json => @user.to_json, :status => 200 } format.xml { head :ok } format.html { redirect_to :action => :index } end else respond_to do |format| format.json { render :text => "Could not create user", :status => :unprocessable_entity } # placeholder format.xml { head :ok } format.html { render :action => :new, :status => :unprocessable_entity } end end end 

该模型:

  validates :fname, :presence => true, :length => { :minimum => 2 } validates :lname, :presence => true, :length => { :minimum => 2 } validates :password, :presence => true, :length => { :minimum => 6 } validates :email, :presence => true, :length => { :minimum => 6 } 

来自github自述文件:“请记住,Devise使用flash消息让用户知道登录是成功还是失败.Devise希望你的应用程序根据需要调用”flash [:notice]“和”flash [:alert]“。

您的<%= error_messages_for %>哪里? 这就是错误的显示方式。

此外,设计需要模型中的虚拟属性以获取其他属性,因此不要忘记将:lname:fname等添加到设计用户模型或您正在做的任何事情。


更新

 <%= f.error_messages_for :model %> 

在Rails 3之前,这就是错误的格式,但在R3中它已经被删除了,你需要安装一个插件来以这种方式访问​​错误。 请参阅有关插件链接的注释

只需在表单的开头插入它,在结束之前结束:

  <%= devise_error_messages! %> 

设计有点棘手,我终于设法自己解决了,这太棒了。 顺便说一句,不要将视图渲染为部分视图,使用模板,然后将根设置为users#registrations_controller ,前提是您已创建自定义控制器和视图。

如果你还没有,我在这里写了一篇关于它的博客文章