我在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
,通知短暂 Flink ,然后离开。这是正常的行为吗?如果是这样,为什么会发生?如果不是,我做错了什么?
2条答案
按热度按时间f8rj6qna1#
如果你不想让flash再次出现,请使用
flash.now
:字符串
当你直接在控制器方法中进行会话检测时,我强烈建议你使用动作过滤器:
型
这里
logged_in
应该是一个确保用户注册和登录的方法。有关详细信息,请检查过滤器。p8h8hvxi2#
我正在使用
"rails", "~> 7.0.6"
,我必须将以下内容放入application.html.erb
中的<head>
标记中:字符串
这是因为在启用Turbolinks的情况下会进行缓存。这个解决方案有一个缺点--它会从你的页面中移除页面缓存的假象。如果你可以不这样做,那么这就是你的解决方案。