ما النهج الذي تتناوله لتضمين الروابط في رسائل الفلاش؟

StackOverflow https://stackoverflow.com/questions/1332013

  •  19-09-2019
  •  | 
  •  

سؤال

القدرة على الحصول على رسائل فلاش (إشعار، خطأ، تحذير، إلخ) مع روابط مضمنة لطيفة من وجهة نظر تفاعل المستخدم. ومع ذلك، تضمين علامة مرساة داخل رسالة فلاش من وحدة التحكم قذرة.

دعونا نفترض أن رسالة فلاش مثل هذا أمر جيد للاستخدام *:

مثال إشعار رسالة فلاش مع رابط مضمن http://img.skitch.com/20090826-xbsa4tb3sjq4fig9nmatakthx3.png (مستعار من dailymile.com.)

ما التكتيك الذي تتناوله بين وحدة التحكم ويوجد لتوظيف شيء مثل هذا نظيف؟

هل كانت مفيدة؟

المحلول

فقط اعتقدت أنني سأشارك هذا، منذ أن وجدت الإجابة كنت أبحث عن مكان آخر:

يعمل على القضبان 3.1

flash[:notice] = "Proceed to #{view_context.link_to('login page', login_path)}".html_safe

نصائح أخرى

غلين جيلين لديه نهج يستدعي رسائل فلاش مفيدة في القضبان.

قمت بتعديل مقتطفات شفرةه لتكون أكثر اصطلاقة قليلا (بالنسبة لي على الأقل).

وحدة تحكم يملأ الفلاش مثل هذا:

flash[:notice]      = "Your profile was updated. %s"
flash[:notice_item] = ["Edit again?", edit_profile_path(@profile)]

ثم قد يكون لديك المساعدين الذين تبدو مثل هذا:

def render_flash_messages(*keys)
  messages = keys.collect do |key|
    content_tag(:p, flash_message_with_item(key), :class => "flash #{key}") if flash[key]
  end.join
  content_tag(:div, messages, :id => "flash_messages") unless messages.blank?
end

def flash_message_with_item(key)
  item = flash["#{key}_item".to_sym]
  substitution = item.is_a?(Array) ? link_to(*item) : item
  flash[key] % substitution
end

الرأي يبحث ببساطة مثل هذا:

<%= render_flash_messages(:error, :notice, :warning) %>

الرأي (عبر flash_message_with_item المساعد مسؤول عن إنشاء علامة المرساة، لكن وحدة التحكم تدير ما يدخل في رسالة الفلاش بما في ذلك مورد اختياري لمزيد من الإجراءات.

يمكنك إنشاء طريقة مساعد لتقديم الجزرية بناء على القيمة التي تم تمريرها مرة أخرى في رسالة الفلاش.

هذا يشبه link_to () في فلاش القضبان

# In your controller
flash[:error] = render_to_string(:partial => "sessions/login_failed_message")

# In sessions/_login_failed_message.html.erb
Login failed.  If you have forgotten your password, you can #{link_to('reset it', reset_path)}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top