これは次の質問に関連していますが、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を使用してクリック可能なテーブル行を作成する別の答えはありますか?
ありがとうございました。