2014-10-09 79 views
4

我正在使用Rails 4.1.4在我的應用程序中。我有一個鏈接到刪除方法,它具有數據確認屬性,因此在繼續操作之前會出現一個確認對話框。Rails 4.1.4自定義確認警報

<%= link_to t(:delete_account), delete_account_path, method: :delete, class: "btn btn-danger btn-sm", data: { confirm: t(:delete_account_confirmation_text) } %> 

顯示的確認對話框是瀏覽器的默認值。我怎樣才能定製這個模式,例如使用Bootstrap模式?

Regards !!!。

回答

15

使用一些自定義的CoffeeScript,如:

$ -> 
    $.rails.allowAction = (link) -> 
    return true unless link.attr('data-confirm') 
    $.rails.showConfirmDialog(link) 
    false 

    $.rails.confirmed = (link) -> 
    link.removeAttr('data-confirm') 
    link.trigger('click.rails') 

    $.rails.showConfirmDialog = (link) -> 
    message = link.attr 'data-confirm' 
    html = """ 
      <div class="modal" id="confirmationDialog"> 
      <div class="modal-dialog"> 
       <div class="modal-content"> 
       <div class="modal-header"> 
        <a class="close" data-dismiss="modal">×</a> 
        <h1>#{message}</h1> 
       </div> 
       <div class="modal-footer"> 
        <a data-dismiss="modal" class="btn">#{link.data('cancel')}</a> 
        <a data-dismiss="modal" class="btn btn-primary confirm">#{link.data('ok')}</a> 
       </div> 
       </div> 
      </div> 
      </div> 
      """ 
    $(html).modal() 
    $('#confirmationDialog .confirm').on 'click', -> $.rails.confirmed(link) 

這也立刻讓翻譯您確定和取消按鈕,就像

data: { confirm: t('messages.confirm_delete'), ok: t('buttons.ok'), cancel: t('buttons.cancel') 

如果你不總是要重複這一點,使用一些幫手來創建一個自定義的「刪除鏈接」!

+0

謝謝!但我沒有使用coffeescript,我應該怎麼把它與JavaScript ?.這段代碼在哪裏?謝謝您的幫助!!。 – 2014-10-10 10:27:36

+1

您可以使用http://coffeescript.org上的「嘗試coffeescript」部分將coffeescript轉換爲javascript。您應該將生成的腳本放在app/assets/javascript文件夾中。您也可以將上面的腳本放在.js.coffee文件中的相同文件夾中。 Rails將照顧轉換! – Danny 2014-10-10 15:39:47

+0

得到它感謝! – 2014-10-10 16:41:19