我一直在撞墙,试着了解如何让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 }
答案 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