代码之家  ›  专栏  ›  技术社区  ›  Ryan McGeary

在flash消息中嵌入链接的方法是什么?

  •  21
  • Ryan McGeary  · 技术社区  · 17 年前

    让我们假设这样的flash消息有利于可用性*:

    Example Flash Message Notice with an Embedded Link http://img.skitch.com/20090826-xbsa4tb3sjq4fig9nmatakthx3.png DailyMile.com )

    你会在控制者和视图之间采取什么策略来干净地使用这样的东西?

    4 回复  |  直到 17 年前
        1
  •  24
  •   jjnevis    15 年前

    轨道工程3.1

    flash[:notice] = "Proceed to #{view_context.link_to('login page', login_path)}".html_safe
    
        2
  •  8
  •   Ryan McGeary    17 年前

    Glenn Gillen Useful Flash Messages in Rails .

    我修改了他的代码片段,使之更加地道(至少对我来说)。

    控制器按如下方式填充闪光灯:

    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 helper)负责创建锚定标记,但控制器管理进入flash消息的内容,包括用于进一步操作的可选资源。

        3
  •  1
  •   Mike Buckbee    17 年前