3

クリック時のコールバックを機能させるためにページをリロードする必要があるのはなぜですか?

Rails 4.0.0.rc2 を使用して、標準リンクの代わりに table-row/table-td をクリックしたいと思います。table-row には css-class があり、coffee-script は行がクリックされたときに適切な URL をロードする必要があります。

以下に示すコードは、最初は正常に機能し、正しいターゲットにリダイレクトされます。次にメニューをクリックして(ターボリンクで処理)元のテーブルを表示すると、テーブルをリロードしない限り、どのテーブル行をクリックしても機能しません。

私のhamlテンプレートは次のようになります

....
%tr{class: 'clickable-row', id: 'row-id-1'}
  %td Some text
  %td more text
%tr{class: 'clickable-row', id: 'row-id-2'}
  %td ...
  %td ...

コーヒースクリプト:

jQuery ->
  $('.clickable-row td').click ->
    target_id = $(this).parent().attr('id').replace /row-id-/,''
    document.location = "/controller_xy/#{target_id}/edit"
4

2 に答える 2

4

ただし、これは「なぜ」という質問に対する答えではありませんが、少なくとも回避策です。

作業中の coffeescript は次のようになります。

jQuery ->

  $(document).on( 'click', '.clickable-row td', ->
    target_id = $(this).parent().attr('id').replace /row-id-/, ''
    document.location = "/controller_xy/#{target_id)}/edit"
  )
于 2013-06-16T20:26:47.317 に答える
1

ここには別の、より単純な解決策があります。

Rails 4 以降のデフォルトであるターボリンクを使用する場合は、jquery.turbolinks gemも含めます。

手順は非常に簡単です。

  1. Gemfile に以下を追加します: gem 'jquery-turbolinks'
  2. JavaScript マニフェスト (デフォルト: app/assets/javascripts/application.js.coffee): jqueryの直後にjquery.turbolinks
    を要求します。 スクリプトの後にターボリンクを要求します。

例:

#= require jquery
#= require jquery.turbolinks
#= require jquery_ujs

# ... your other scripts here ...

#= require turbolinks
于 2014-03-21T12:13:04.750 に答える