0

以下是模型示例:

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">&times;  </button>
       <%= content_tag :div, msg, :id => "flash_#{name}" %>
     </div>
  <% end %>
<% end %>

它不起作用,所以我需要帮助。谢谢你。

4

1 回答 1

0

我认为它失败了,因为msg不是字符串,而是字符串数组,所以它不会出现。

我创建了一个方便的模块,包含在我的应用程序控制器 (flash.rb) 中:

https://gist.github.com/Rabsztok/9018332

这允许我使用简单的方法在控制器中创建闪存消息,例如

if @user.save
  Emailer.email_confirmation(@user).deliver
  success 'Registered!'
else
  error_for @user
end

我还包括了用于显示 Flash 的部分内容(在布局中您喜欢的任何位置渲染它)和帮助器,它使用方法创建了方便的错误列表,可以放置在表单上方并进行验证。它将创建带有错误列表的红色错误消息。

于 2014-02-15T11:59:42.547 回答