it-swarm.asia

كيفية عرض إشعار فلاش Rails عند إعادة التوجيه؟

لدي الكود التالي في وحدة تحكم 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'

أحتاج إلى إعادة توجيه على الرغم من ... ليس مجرد تقديم لهذا الإجراء. هل يمكنني الحصول على إشعار فلاش بعد إعادة التوجيه؟

56
at.

إزالة ".now". لذلك اكتب فقط:

flash[:notice] = 'Successfully checked in'
redirect_to check_in_path

من المفترض أن يتم استخدام .now على وجه التحديد عندما تقوم بالتقديم فقط وليس إعادة التوجيه. عند إعادة التوجيه ، لن يتم استخدام .now.

104
Rebitzele
redirect_to new_user_session_path, alert: "Invalid email or password"

بدلاً من :alert ، يمكنك استخدام :notice

لعرضهم

33
Tauqeer Ahmad

أو يمكنك القيام بذلك في سطر واحد.

redirect_to check_in_path, flash: {notice: "Successfully checked in"}
15
etlds

إذا كنت تستخدم 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/

4
Jon Schneider

هذا سوف يعمل ايضا

redirect_to check_in_path, notice: 'Successfully checked in'

4
Seifer

واجهت نفس المشكلة ، وحلت سؤالك ، لأنني نسيت تضمينه في طريقة العرض/check_in:

<p id="notice"><%= notice %></p>

في وحدة التحكم ، فقط سطر واحد:

redirect_to check_in_path, :notice => "Successfully checked in"             
2
Florencio Lugo