在我的Rails7应用程序中有一个警报没有显示的问题。
但是notices
是。
我使用<%= alert %>
在application.html.erb
中显示警报
<%= render partial: "shared/navbar" %>
<div class="px-6">
<div class="mt-6"></div>
<div>
<% if notice %>
<div class="notification is-success is-light text-center">
<%= notice %>
</div>
<% end %>
<% if alert %>
<% debugger %>
<div class="notification is-danger is-light text-center">
<%= alert %>
</div>
<% end %>
<%= yield %>
</div>
</div>
我在控制器操作中添加了一个“FAILED”记录器,我在Rails日志中看到了这个记录器,这向我证明我们确实陷入了“else”条件,并且new
页面在创建新对象失败时呈现,但是我没有看到警告消息。
def create
@rescue = AnimalRescue.new(rescue_params)
respond_to do |format|
if @rescue.save
format.html { redirect_to animal_rescue_url(@rescue), notice: "Rescue was successfully created." }
format.json { render :show, status: :created, location: @rescue }
else
Rails.logger.info "FAILED"
format.html { render :new, status: :unprocessable_entity, alert: "Unable to create rescue." }
format.json { render json: @rescue.errors, status: :unprocessable_entity }
end
end
结束
2条答案
按热度按时间agyaoht71#
:alert
和:notice
是redirect_to
方法的选项,设置了对应的flash
消息:另外,
flash
只会在重定向后的下一个请求中显示。要在当前请求中显示flash消息,您必须使用flash.now
:如果表单位于turbo框架内,则需要在框架内显示警报。
v440hwme2#
你太复杂了。使用相同的逻辑来显示各种各样的flash消息会更容易、更灵活,因为唯一需要改变的是一个CSS类:
flash毕竟只是一个简单的包含字符串. KISS的哈希对象。