rails - 设计 - 创建注册表

时间:2010-11-07 21:58:25

标签: ruby-on-rails ruby-on-rails-3 devise

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

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

<%= render 'devise/registrations/new' %>

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

<%= form_for(user_registration_path, :url => user_registration_path) do |f| %>
.
.

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

<% flash.each do |key, value| %>
    <div class="flash <%= key %>"><%= value %></div>
<% end %>

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

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

你能帮我理解如何让这个工作结束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 }

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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


更新

<%= f.error_messages_for :model %>

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

答案 2 :(得分:0)

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

  <%= devise_error_messages! %>

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

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