2012-04-10 26 views
1

我的应用程序中的Flash消息有问题。实际上,在我的应用程序中,我使用了用于用户身份验证的设计以及使用ruby 1.9.3和rails 3.2.2的应用程序。ruby​​ 1.9.3和rails 3.2.2中的flash消息问题

当用户登录,注销并注册新帐户时,设备flash [:notice]工作正常。

在Rails中,flash [:notice]和flash [:alert]是默认的flash消息。

快闪消息是只显示一次时页面重载或者当对其他网页的用户从一个页面负

的问题是当用户是登录的色器件闪光[:通知]被显示,但是当我重新加载页闪光[:通知]显示,但在轨道闪光[:通知]将只显示一次

其实问题是当我尝试创建一个新的职位,我有重定向到显示页面,我写了这个方法我从应用程序布局调用来显示Flash消息的帮助方法。

在控制器创建方法

def create 
    @asset = Asset.new(params[:asset]) 
    @asset.user_id = current_user.id 

    respond_to do |format| 
    if @asset.save 
     format.html { redirect_to @asset, alert: 'Asset was successfully created.' } 
     format.json { render json: @asset, status: :created, location: @asset } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @asset.errors, status: :unprocessable_entity } 
    end 
    end  
end 

用于显示闪光消息

FLASH_TYPES = [:error, :warning, :success, :message,:notice,:alert] 

def display_flash(type = nil) 
    html = "" 
    if type.nil? 
    FLASH_TYPES.each { |name| html << display_flash(name) } 
    else 
    return flash[type].blank? ? "" : "<div class=\"#{type}\"><p>#{flash[type]}</p>  </div>" 
    end 
    html.html_safe 
end 

我有调用此方法构成本申请布局

= display_flash 

我已经与试图辅助方法闪光灯[:警告],闪光灯[:错误],闪光灯[:消息],但视图上无消息显示页和我有宝石称为flash_message这种尝试也只显示 闪光灯[:声明]

请帮我解决这个问题

回答

-1

海兰我使用这种方式来展现闪光灯message.First我让使用局部

_flash.html.erb在该部分

<% [:alert, :notice, :error].select { |type| !flash[type].blank? }.each do |type| %> 
<p> 
    <% if flash[:notice] %> 
    <div class="alert-message error"> 
     <h2 style="color: #ffffff;">Notice:</h2> <br/> 
     <%= flash[type] %> 
    </div> 
<% elsif flash[:error] %> 
    <div class="alert-message error"> 
     <h2 style="color: #ffffff;">Errors</h2> <br/> 
     <% flash[:error].each_with_index do |error, index| %> 
      <%= index+1 %>. <%= error %> <br/> 
     <% end %> 
    </div> 
    <% end %> 


    </p> 
    <% end %> 

shared.The代码和我把它在应用布局这样

<div id="flash"> 
    <%= render :partial => 'shared/flash', :object => flash %> 
    </div> 

而且在控制器使用的通知,警告这样

flash[:notice] = 'Admin was successfully created.' 
    flash[:alert] = 'Admin was successfully created.' 

但显示错误,我使用数组,因为它可能会比one.Like这

 def create 
     @user = User.new(params[:user]) 
     @user.is_activated = true 
# @user.skip_confirmation! 
if @user.save 
    role = Role.find_by_name("admin") 
    RoleUser.create!(:user => @user, :role => role) 
    redirect_to :controller => '/administrator', :action => 'new' 
    flash[:notice] = 'Admin was successfully created.' 
else 
    flash[:error]=[] 
    @user.errors.full_messages.each do |error| 
    flash[:error] << error 
    end 

    render :action => "new" 
end 

更多在application.js中添加此行

setTimeout("$('#flash').html(' ');", 10000); 

使用它并享受!!!!!!!!!!!!!!