0

私は2つのテンプレートを持つウェブサイトを持っています

1 つのテンプレート ハンドルは定期的にフラッシュ メッセージを受信します。もう 1 つのテンプレートには、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

私の結果は常にプレーンテキストです:

["<script defer=\"defer\" type=\"text/javascript\">\n//<![CDATA[\nalert('All is good')\n//]]>\n</script>", "<script defer=\"defer\" type=\"text/javascript\">\n//<![CDATA[\nalert('All is good')\n//]]>\n</script>", "<script defer=\"defer\" type=\"text/javascript\">\n//<![CDATA[\nalert('All is good')\n//]]>\n</script>", "<script defer=\"defer\" type=\"text/javascript\">\n//<![CDATA[\nalert('All is good')\n//]]>\n</script>"]

4

1 に答える 1