私はこの投稿 https://reinteractive.com/articles/how-to-create-flash-messages-in-Rails-7 に従って、tailwind で素敵な Flash メッセージを追加し、View Components を使用するようになりました。 :type を除いてすべてが機能します。
例のように Flash メッセージを追加すると、次のようになります。
def home
flash[:message] = "Welcome to the home page!"
flash[:type] = :notice
end
次のように表示されます。
フラッシュメッセージのスクリーンショット
これは、component.html.erb です。
<div class='relative flex px-4 py-3 space-x-2 border <%= color_classes %>' role='alert'>
<strong class='font-bold'><%= message %></strong>
<span class='pl-5'>
<%= heroicon 'x-mark', options: { 'data-action': 'click->flash-message#close', class: 'w-6 h-6 fill-current', role: 'button' } %>
</span>
</div>
これがレンダリングされるものです:
<div data-controller="flash-message" class="inset-0 p-6 items-start justify-end">
<div class="flex flex-col items-center justify-center">
<div class="relative flex px-4 py-3 space-x-2 border bg-gray-100 border-gray-400 text-gray-700" role="alert">
<strong class="font-bold">Welcome to the home page!</strong>
<div class="relative flex px-4 py-3 space-x-2 border bg-gray-100 border-gray-400 text-gray-700" role="alert">
<strong class="font-bold">notice</strong>
投稿に誤りはありますか、それとも過去 2 か月間で何か更新されましたか?
これは意味がありません:
flash[:message] = "Welcome to the home page!"
flash[:type] = :notice
そのはず:
flash[:notice] = "Welcome to the home page!"
フラッシュを検査すると、何を反復しているのかがわかります。
#<ActionDispatch::Flash::FlashHash:0x00007f9ede9208b8
@discard=#<Set: {}>,
@flashes={"notice"=>"Welcome to the home page!"}, # <= this
@now=nil>
<% flash.each do |type, message| %>
# │ └─ "Welcome to the home page!"
# └─ "notice"
<%= render FlashMessage::Component.new(type: type, message: message) %>
<% end %>