1

確認ダイアログをカスタマイズしたい。確認ダイアログをカスタマイズする前に、すべてが完璧です。リンクの削除をクリックすると

<%= link_to image_tag("icon_delete.png", :border => 0), user, method: :delete ,data: { confirm: 'Are you sure delete:' + user.email } %>

ブラウザにデフォルトの確認ポップアップが表示され、[OK] を押します。このリンクは、UserController で destroy() を呼び出します。ここで、user.js.coffee にカスタマイズ確認ポップアップを実装します。

$.rails.allowAction = (link) ->
return true unless link.attr('data-confirm')
$.rails.showConfirmDialog(link) # look bellow for implementations
false # always stops the action since code runs asynchronously

$.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-header">
         <a class="close" data-dismiss="modal">×&lt;/a>
         <h3>Are you sure Mr. President?</h3>
       </div>
       <div class="modal-body">
         <p>#{message}</p>
       </div>
       <div class="modal-footer">
         <a data-dismiss="modal" class="btn">Cancel</a>
         <a data-dismiss="modal" class="btn btn-primary confirm">OK</a>
       </div>
     </div>
     """
$(html).modal()
$('#confirmationDialog .confirm').on 'click', -> $.rails.confirmed(link)

今回は、リンクの削除をクリックすると -

  1. ブラウザは、カスタマイズ確認ポップアップ ダイアログまたはデフォルトのポップアップ ダイアログを表示しませんでした
  2. show()--> What's going on here の代わりに UserController で呼び出されたリンクは、destroy()
    カスタマイズ確認ダイアログを実装する前に、すべてが完全に機能していました。route.rb は何も変更していません。

Ruby バージョン 1.9.3 と Rails バージョン 4.0.0 を使用しています。My asset/javascripts/application.js

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

gemfile

gem 'sass-rails', '~> 4.0.0'
gem 'bootstrap-sass', '2.3.2.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

誰でも私を助けることができますか?

4

2 に答える 2

0

ここで説明されている実装を使用しているようです: http://rors.org/demos/custom-confirm-in-rails

投稿したコードは、元の記事に示されているコードと同じようにインデントされていません。コーヒー スクリプトではインデントが非常に重要であるため、実際のコードが正しくインデントされていない場合は、それを試してください。

たとえば、最初の関数は次のようになります。

$.rails.allowAction = (link) ->
  return true unless link.attr('data-confirm')
  $.rails.showConfirmDialog(link) # look bellow for implementations
  false # always stops the action since code runs asynchronously
于 2013-10-10T03:16:49.687 に答える