【问题标题】:Rails flash messages fired with javascript使用 javascript 触发的 Rails flash 消息
【发布时间】:2014-01-13 19:15:20
【问题描述】:

我有一个包含两个模板的网站

一个模板句柄定期接收 Flash 消息。 另一个模板需要通过 javascript 触发的消息:

var notyfy = notyfy(
{
    text: 'Hello I am an error',
    type: 'error' // alert|error|success
});

我已经建立了一个flash_helper。此助手监视哪个模板处于活动状态并应发回正确的“闪存消息”:

  • 我不知道如何在 view_helper 中发送 javascript

这是我的 flash_helper.rb

# called via <%= flash_messages %>

module FlashHelper

  def flash_messages
    return if flash.empty?

    if controller.send(:_layout) == "pro/application"
      flash.collect do |type, message|
        # HERE SHOULD THE MAGICK HAPPEN :-)
        javascript_tag "alert('All is good')", defer: 'defer'
      end
    else
      flash.collect do |type, message|
        content_tag(:div, :class => "notification-box notification-box-#{type}") do
          content_tag(:p) do
            content_tag(:i, nil, class: "icon-ok") +
                message
          end +
              link_to("#", class: "notification-close notification-close-#{type}") do
                content_tag(:i, nil, class: "icon-remove")
              end
        end
      end.join("\n").html_safe
    end
  end
end

我的结果总是纯文本:

["&lt;script defer=\"defer\" type=\"text/javascript\"&gt;\n//&lt;![CDATA[\nalert('All is good')\n//]]&gt;\n&lt;/script&gt;", "&lt;script defer=\"defer\" type=\"text/javascript\"&gt;\n//&lt;![CDATA[\nalert('All is good')\n//]]&gt;\n&lt;/script&gt;", "&lt;script defer=\"defer\" type=\"text/javascript\"&gt;\n//&lt;![CDATA[\nalert('All is good')\n//]]&gt;\n&lt;/script&gt;", "&lt;script defer=\"defer\" type=\"text/javascript\"&gt;\n//&lt;![CDATA[\nalert('All is good')\n//]]&gt;\n&lt;/script&gt;"]

【问题讨论】:

    标签: javascript ruby-on-rails-3 ruby-on-rails-3.2 flash-message


    【解决方案1】:

    我可以使用 raw

    if controller.send(:_layout) == "pro/application"
        html = "<script>"
      flash.collect.with_index do |(type, message), i|
        html += "var notyfy#{i} = notyfy({"
        html += "text: '#{message}',"
        html += "type: '#{type}'"
        html += "});"
      end
        html += "</script>"
        return raw(html)
    else
    ....
    ...
    ..
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 2015-10-22
      • 2018-04-05
      • 1970-01-01
      相关资源
      最近更新 更多