问题:如何在Rails中不显示flash消息?
回答: 在Rails中,可以通过以下几种方式来实现不显示flash消息:
flash.now
代替flash
,这样flash消息将只在当前请求中显示,而不会在下一个请求中继续显示。例如:# 控制器中
def create
# 逻辑处理
flash.now[:notice] = "创建成功"
render :new
end
# 视图中
<% if flash[:notice] %>
<div class="notice"><%= flash[:notice] %></div>
<% end %>
// 在application.js或其他适当的JavaScript文件中
document.addEventListener("DOMContentLoaded", function() {
var flashMessages = document.querySelectorAll(".flash-message");
flashMessages.forEach(function(message) {
message.style.display = "none";
});
});
# 视图中
<% if flash[:notice] %>
<div class="flash-message notice"><%= flash[:notice] %></div>
<% end %>
# application.html.erb
<% if flash_enabled? %>
<% flash.each do |key, value| %>
<div class="flash-message <%= key %>"><%= value %></div>
<% end %>
<% end %>
# application_controller.rb
class ApplicationController < ActionController::Base
helper_method :flash_enabled?
def flash_enabled?
# 自定义逻辑,决定是否显示flash消息
# 返回true或false
end
end
以上是在Rails中不显示flash消息的几种方法,可以根据具体需求选择适合的方式来实现。
领取专属 10元无门槛券
手把手带您无忧上云