Rails app中的Javascript Alert - params hash的复选框

时间:2015-07-02 17:51:47

标签: javascript ruby-on-rails ruby-on-rails-3

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

我对其中的部分内容有所了解,但它并没有结合在一起。

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

我也尝试过这个警报,但我不确定如何将'msg'传递给JavaScript,这甚至不能解决params问题。

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>

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

<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>

我的首选方式是: 使用以下gem: https://github.com/gazay/gon

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