重新加载后会短暂出现Rails flash.notice

时间:2018-10-22 22:36:15

标签: ruby-on-rails ruby

我在Rails中有一个控制器动作,如下所示:

def register
 if logged_in?
   current_user().courses << Course.find(params[:course_id])
   flash.notice = 'Successfully registered!'
   redirect_to '/'
 else
   flash.alert = "You must be logged in"
   redirect_to '/courses'
 end
end

这在/courses视图中显示为

<% if flash[:notice] %>
   <div class="notice"><%= flash[:notice] %></div>
<% end %>

但是,当我转到其他路线然后返回/courses时,通知会短暂闪烁,然后消失。这是正常行为吗?如果是这样,为什么会发生?如果没有,我在做什么错?

1 个答案:

答案 0 :(得分:1)

如果您不想让闪光灯再次出现,请改用flash.now

flash.now[:notice] = 'Successfully registered!'

当您直接在控制器方法中进行会话检测时,我强烈建议您使用动作过滤器:

before_action :logged_in, only: [:register]

# ...

def register
  # ...
end

这里logged_in是确保用户注册并登录的一种方法。有关详细信息,请检查Filters