Rails应用程序中的Javascript警报-参数哈希复选框

Rails应用程序中的Javascript警报-参数哈希复选框,javascript,ruby-on-rails,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby On Rails 3,我正在开发一个Rails应用程序,它使用外部api进行身份验证。如果同时使用相同的登录凭据,则应用程序必须提醒第二个用户已在进行会话。这需要是一个带有“ok”框的JavaScript警报,并且返回值必须作为标志传递给api以终止第一个会话 我对其中的一部分有一些想法,但没有统一起来 由警报框触发的登录表单中的隐藏输入 我也尝试了这个警报,但我不确定如何将“msg”传递到JavaScript中,这甚至不能解决参数问题 login_controller.rb elsif body['Valid

我正在开发一个Rails应用程序,它使用外部api进行身份验证。如果同时使用相同的登录凭据,则应用程序必须提醒第二个用户已在进行会话。这需要是一个带有“ok”框的JavaScript警报,并且返回值必须作为标志传递给api以终止第一个会话

我对其中的一部分有一些想法,但没有统一起来

由警报框触发的登录表单中的隐藏输入

我也尝试了这个警报,但我不确定如何将“msg”传递到JavaScript中,这甚至不能解决参数问题

login_controller.rb

  elsif body['ValidationMessage'] == 'OtherSessionActive'
    flash[:alert] = auth_config['session_alert']
    redirect_to login_path and return
  else

login.html.erb

  <div id='flash'>
    <% flash.each do |name, msg| %>
        <% if name == :alert %>
            <script>
                alert(#{msg})
            </script>
        <% else %>
            <%= content_tag :div, msg, :id => "flash_#{name}" %>
        <% end %>
    <% end %>
  </div>
login\u controller.rb
elsif正文['ValidationMessage']=='OtherSessionActive'
flash[:alert]=auth_config['session_alert']
将\重定向到登录\路径并返回
其他的
login.html.erb
警报(#{msg})
“flash{name}”%>
任何想法都将不胜感激

一种方法(但不是好的做法)如下:

<div id='flash'>
    <% flash.each do |name, msg| %>
        <% if name == :alert %>
            <script type='text/javascript'>
                $(function(){ // if you are using jquery
                   alert("<%= msg %>")
                })

            </script>
        <% else %>
            <%= content_tag :div, msg, :id => "flash_#{name}" %>
        <% end %>
    <% end %>
  </div>

$(function(){//如果您使用的是jquery
警报(“”)
})
“flash{name}”%>
我喜欢的方式是: 使用以下gem:

您可以从控制器将消息分配给javascript对象。并且可以直接从javascript文件显示警报。

以下是一种方法(但不是好的做法):

<div id='flash'>
    <% flash.each do |name, msg| %>
        <% if name == :alert %>
            <script type='text/javascript'>
                $(function(){ // if you are using jquery
                   alert("<%= msg %>")
                })

            </script>
        <% else %>
            <%= content_tag :div, msg, :id => "flash_#{name}" %>
        <% end %>
    <% end %>
  </div>

$(function(){//如果您使用的是jquery
警报(“”)
})
“flash{name}”%>
我喜欢的方式是: 使用以下gem:


您可以从控制器将消息分配给javascript对象。并且可以直接从javascript文件显示警报。

完成警报。没有使用erb javascript_标记。我想使用jquery获取警报框的值,并将其传递给隐藏的输入。或者类似的?警报已经完成了。没有使用erb javascript_标记。我想使用jquery获取警报框的值,并将其传递给隐藏的输入。或者类似的?为什么这种方法不是好的实践?我现在的主要问题是,无论我是否使用这个gem,我仍然需要将警报中的数据(我实际上使用的是confirm)获取到一个params散列中,这样我就可以在控制器操作中使用它。更不用说它非常模糊,而且不鼓励使用js inside view和ruby块。因此,如果您查看当前上下文,即使在生成错误消息时,您也会看到一些含糊不清的错误消息,例如当您更新记录ftom控制器或创建时,或任何其他错误消息或消息将提示警报。这可能不是商业目的。因此,如果您单独将消息传递给js,并且处理来自js的警报消息,那么您当前的flash通知只能用于通知。为什么这种方法不是好的做法?我现在的主要问题是,无论我是否使用这个gem,我仍然需要将警报中的数据(我实际上使用的是confirm)获取到一个params散列中,这样我就可以在控制器操作中使用它。更不用说它非常模糊,而且不鼓励使用js inside view和ruby块。因此,如果您查看当前上下文,即使在生成错误消息时,您也会看到一些含糊不清的错误消息,例如当您更新记录ftom控制器或创建时,或任何其他错误消息或消息将提示警报。因此,如果您单独将消息传递给js,并且处理来自js的警报消息,那么您当前的flash通知只能用于通知。