以下是模型示例:
class User < ActiveRecord::Base
has_secure_password
validates :login, :presence => { :message => 'please, provide a password' }, :uniqueness => true
validates :password, :presence => true, :confirmation => true
...etc...
end
以下是我在控制器中的内容:
class UsersController < ApplicationController
def create
@user = User.create(user_params)
if @user.save
redirect_to(:action => 'login', :controller => 'access')
else
redirect_to(:action => 'index', :controller => 'registration')
flash[:notice] = @user.errors.full_messages
end
end
我在注册表格下有一个渲染功能:
<%= render 'layouts/error_messages' %>
部分视图本身:
<%# Rails flash messages styled for Bootstrap 3.0 %>
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-<%= name == :notice ? "success" : "danger" %>">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">× </button>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
它不起作用,所以我需要一只手。谢谢。
答案 0 :(得分:0)
我认为它失败了,因为 msg 不是字符串,而是字符串数组,因此它不会显示。
我创建了一个方便的模块,我将其包含在我的应用程序控制器(flash.rb)中:
https://gist.github.com/Rabsztok/9018332
这允许我使用像
这样的简单方法在控制器中创建flash消息if @user.save
Emailer.email_confirmation(@user).deliver
success 'Registered!'
else
error_for @user
end
我还包括了我的部分用于显示flash(在你的布局中将它呈现在你喜欢的任何位置)和帮助器,使用metod创建方便的错误列表,可以放置在表单上并进行验证。它将创建带有错误列表的红色错误消息。