用javascript触发的Rails flash消息

用javascript触发的Rails flash消息,javascript,ruby-on-rails-3,ruby-on-rails-3.2,flash-message,Javascript,Ruby On Rails 3,Ruby On Rails 3.2,Flash Message,我有一个有两个模板的网站 一个模板处理定期接收的flash消息。 另一个模板需要通过javascript触发消息: var notyfy = notyfy( { text: 'Hello I am an error', type: 'error' // alert|error|success }); 我已经建立了一个flash\u助手。此帮助程序监视哪个模板处于活动状态,并应发回正确的“快闪消息”: 我不知道如何在view\u助手中发送javascript 这是我的flas

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

一个模板处理定期接收的flash消息。 另一个模板需要通过javascript触发消息:

var notyfy = notyfy(
{
    text: 'Hello I am an error',
    type: 'error' // alert|error|success
});
我已经建立了一个
flash\u助手
。此帮助程序监视哪个模板处于活动状态,并应发回正确的“快闪消息”:

  • 我不知道如何在view\u助手中发送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
#通过
模块FlashHelper
def flash_消息
如果flash.empty返回?
如果controller.send(:_布局)=“pro/application”
flash.collect do |类型、消息|
#这里应该发生奇迹:-)
javascript_标记“警报('All is good')”,延迟:“延迟”
结束
其他的
flash.collect do |类型、消息|
content_标记(:div,:class=>“通知框通知框-#{type}”)do
内容标签(:p)do
内容标签(:i,nil,类别:“图标正常”)+
消息
结束+
链接到(“#”,类:“通知关闭通知关闭-#{type}”)do
内容标签(:i,nil,类别:“图标移除”)
结束
结束
end.join(“\n”).html\u safe
结束
结束
结束
我的结果始终是纯文本:


[“\n/\n”、“\n/\n”、“\n/\n”、“\n/\n”]

我是用
原始的

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
....
...
..
if controller.send(:_布局)==“pro/application”
html=“”
flash.collect.with_index do |(类型、消息),i|
html+=“var notyfy{i}=notyfy({”
html+=“文本:'#{message}',”
html+=“类型:'#{type}'”
html+=“}”)
结束
html+=“”
返回原始(html)
其他的
....
...
..