【问题标题】:jQuery & Rails 3 - callbackjQuery & Rails 3 - 回调
【发布时间】:2011-08-01 21:12:16
【问题描述】:

我正在尝试使用两个参数制作自己的确认对话框。

function myAlert(message, adr) {
    jConfirm(message, 'Confirmation Dialog', function(answer) {
        if (answer){
            window.location = adr;
        }

    });
}

$(document).ready(function() {
  $.rails.confirm = function(mess, mess2) {
      return myAlert(mess, mess2);
  }
});

并且在视图中:

<%= link_to 'Delete', 
        {:controller => 'controller_name', :action => 'action_name'},
         :confirm => {"xxxxxxx", "aaaaaaaa"} %>

在警报消息中,我将收到以下信息: xxxxxxxaaaaaaaa

我做错了什么?为什么我只得到xxxxxxx?为什么要合并字符串?

PS:jConfirm函数中的第一个参数显示消息确认窗口。

【问题讨论】:

    标签: javascript jquery ruby-on-rails-3 function callback


    【解决方案1】:

    我相信:confirm 只是一个字符串参数。我有点惊讶,因为:confirm =&gt; {"xxxxxxx", "aaaaaaaa"} 如果我没记错的话应该会抛出语法错误。

    如果您想传递两个参数,您可以将它们存储在单独的数据属性中并滚动您自己的确认方法,如下所示:

    <%= link_to 'Delete', 
          :controller => 'controller_name', :action => 'action_name', :class => "confirm",
          :data-foo => "bar", :data-bar => "foo" %>
    
    $('a.confirm').click(function(){
      return myAlert($(this).data('foo'), $(this).data('bar'));
    });
    

    或者你用逗号分隔你的参数并使用 JS 分割它们:

    … :confirm => "foo,bar" …
    
    $.rails.confirm = function(message) {
      var messageParts = message.split(',');
      return myAlert(messageParts[0], messageParts[1]);
    }
    

    【讨论】:

    • 愚蠢的问题 - 我试图按照你的第一个提示来做,但我收到错误 undefined local variable or method `bar' for #:0x1036b7bd8 >(我是新手)
    • 试试:'data-foo' 而不是:data-foo
    猜你喜欢
    • 2011-04-06
    • 2011-07-20
    • 2011-11-26
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多