ruby Rails flash.重新加载后短暂出现的通知

u0njafvf  于 2023-08-04  发布在  Ruby
关注(0)|答案(2)|浏览(92)

我在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 ,然后离开。这是正常的行为吗?如果是这样,为什么会发生?如果不是,我做错了什么?

f8rj6qna

f8rj6qna1#

如果你不想让flash再次出现,请使用flash.now

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

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

before_action :logged_in, only: [:register]

# ...

def register
  # ...
end


这里logged_in应该是一个确保用户注册和登录的方法。有关详细信息,请检查过滤器。

p8h8hvxi

p8h8hvxi2#

我正在使用"rails", "~> 7.0.6",我必须将以下内容放入application.html.erb中的<head>标记中:

<meta name="turbo-cache-control" content="no-cache">

字符串
这是因为在启用Turbolinks的情况下会进行缓存。这个解决方案有一个缺点--它会从你的页面中移除页面缓存的假象。如果你可以不这样做,那么这就是你的解决方案。

相关问题