0

これは次の質問に関連していますが、Rails 4 のデフォルトとの比較のために、javascript の代わりに coffeescript を使用したいと考えています。

出発点は、以前の質問への回答で提供されたコードです: Making a table row into a link in Rails

ビュー ERB コードには、次のコードを含むテーブル ジェネレーターが含まれています。

<% @songs.each do |song| %>
  <tr data-link="<%= edit_song_path(song) %>">
    <td><%= song.Name %></td>
    <td><%= song.Group %></td>
  </tr>
<% end %>

この<tr data-link="<%= edit_song_path(song) %>">行は、上記のリンクされた質問の回答に基づいています。

私はsongs.js.coffeeファイルに以下を持っています:

$("tr[data-link]").click -> 
  window.location = this.dataset.link

これは、Mark Berry からの回答にある JavaScript の私の翻訳です。などの他の提案も試しましたwindow.location = $(this).data("link")

ページが読み込まれると、テーブルの行はクリックできなくなります。設定するアクションをwindow.locationアラートに置き換えると、ユーザーがテーブルの行をクリックしたときではなく、ページが読み込まれたときにアラート ダイアログが表示されます。

上記の coffeescript コードは、song.js.coffee ファイル内の唯一のコードです。コードをラップする必要があるものがありませんか?

部分的な回答:$ ->最初のコメントで提案されているように、元の coffeescript コードの前に追加すると、テーブルの行が一度選択可能になります。他の読み物から、ドル記号変数が jQuery のエイリアスになっていると思います (この例は、The Little Book on Coffeescript のイディオムの章にあります: http://arcturo.github.io/library/coffeescript/04_idioms. html )。

残念ながら、ページがロードされた後、1 つの表の行を選択して編集ページを表示することができますが、ユーザーがブラウザーの戻るボタンまたはページに戻るリンクを使用してページに戻ると、表の行は選択できなくなりました。

新しい coffeescript コードは次のとおりです。

$ ->
  $("tr[data-link]").click -> 
    window.location = this.dataset.link

上記のコードは、javascript から coffeescript への正しい変換ですか。私は両方のスクリプト言語を初めて使用します。

Rails 4でcoffeescriptを使用してクリック可能なテーブル行を作成する別の答えはありますか?

ありがとうございました。

4

1 に答える 1