我在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
时,通知会短暂闪烁,然后消失。这是正常行为吗?如果是这样,为什么会发生?如果没有,我在做什么错?
答案 0 :(得分:1)
如果您不想让闪光灯再次出现,请改用flash.now
:
flash.now[:notice] = 'Successfully registered!'
当您直接在控制器方法中进行会话检测时,我强烈建议您使用动作过滤器:
before_action :logged_in, only: [:register]
# ...
def register
# ...
end
这里logged_in
是确保用户注册并登录的一种方法。有关详细信息,请检查Filters。