لدي الكود التالي في وحدة تحكم Rails:
flash.now[:notice] = 'Successfully checked in'
redirect_to check_in_path
ثم في طريقة العرض/check_in:
<p id="notice"><%= notice %></p>
ومع ذلك ، فإن الإشعار لا يظهر. يعمل بشكل مثالي إذا لم أعد التوجيه في وحدة التحكم:
flash.now[:notice] = 'Successfully checked in'
render action: 'check_in'
أحتاج إلى إعادة توجيه على الرغم من ... ليس مجرد تقديم لهذا الإجراء. هل يمكنني الحصول على إشعار فلاش بعد إعادة التوجيه؟
إزالة ".now". لذلك اكتب فقط:
flash[:notice] = 'Successfully checked in'
redirect_to check_in_path
من المفترض أن يتم استخدام .now على وجه التحديد عندما تقوم بالتقديم فقط وليس إعادة التوجيه. عند إعادة التوجيه ، لن يتم استخدام .now.
redirect_to new_user_session_path, alert: "Invalid email or password"
بدلاً من :alert
، يمكنك استخدام :notice
لعرضهم
أو يمكنك القيام بذلك في سطر واحد.
redirect_to check_in_path, flash: {notice: "Successfully checked in"}
إذا كنت تستخدم Bootstrap ، فسيتم عرض رسالة فلاش بتنسيق جيد على الصفحة المستهدفة لإعادة التوجيه.
في وحدة التحكم الخاصة بك:
if my_success_condition
flash[:success] = 'It worked!'
else
flash[:warning] = 'Something went wrong.'
end
redirect_to myroute_path
في وجهة نظرك:
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
سيؤدي ذلك إلى إنتاج HTML مثل:
<div class="alert alert-success">It worked!</div>
للاطلاع على أنماط التنبيه المتوفرة في Bootstrap ، راجع: http://getbootstrap.com/docs/4.0/components/alerts/
المرجع: https://agilewarrior.wordpress.com/2014/04/26/how-to-add-a-flash-message-to-your-Rails-page/
هذا سوف يعمل ايضا
redirect_to check_in_path, notice: 'Successfully checked in'
واجهت نفس المشكلة ، وحلت سؤالك ، لأنني نسيت تضمينه في طريقة العرض/check_in:
<p id="notice"><%= notice %></p>
في وحدة التحكم ، فقط سطر واحد:
redirect_to check_in_path, :notice => "Successfully checked in"