0

Rails 3のリンクにdata-confirmタグがあると、確認のためのアラートを出すために必要な、邪魔にならないJavascriptが生成されます。例えば:

<%= link_to "Destroy", @product, :confirm => "Are you sure?", :method => :delete %>

ただし、この動作を次のように変更したいと思います。

ボタンをクリックすると、テキストが「Sure?」に変わります。次に、アクションを実行するには、ユーザーはそれをもう一度クリックする必要があります。(おそらく、タイムアウト後にテキストが通常に戻ることさえあります)

Rails 3.1アプリケーションでこの動作を変更するのに最適な場所はどこですか?(ところで、これをうまく機能させることができるより良い解決策がある場合に備えて、私はTwitter Bootstrapを使用しています)。

4

1 に答える 1

0

これがその方法です(これはカスタムレール確認ボックス($ .rails.confirmオーバーライド付き)に基づいています)

必要に応じて、これはapplication.jsに組み込まれます(Rails 3.1)

$.rails.confirm = function(message, element) 
{ 
    var state = element.data('state');
    var txt = element.text();
    if (!state)
    {
        element.data('state', 'last');
        element.text('Sure?');
        setTimeout(function()
        {
            element.data('state', null);
            element.text(txt);
        }, 2000);
        return false;
    }   
    else
    {
        return true;
    }
};

$.rails.allowAction = function(element) 
{
    var message = element.data('confirm'),
        answer = false, callback;
    if (!message) { return true; }

    if ($.rails.fire(element, 'confirm')) 
    {
        // le extension.
        answer = $.rails.confirm(message, element);
        callback = $.rails.fire(element, 'confirm:complete', [answer]);
    }
    return answer && callback;
};

$.rails.handleLink = function(link) 
{
    if (link.data('remote') !== undefined) 
    {
        $.rails.handleRemote(link);
    } 
    else if (link.data('method')) 
    {
        $.rails.handleMethod(link);
    }

    return false;
};
于 2012-05-04T11:53:32.113 に答える