6

私は初めての本物の Rails アプリを作成している最中で、外出先で学習しています。1 つのフォームにネストされた属性を作成する必要がある状況があるため、それに関連する Railscast のエピソード (196 および 197) を見てきました。2 番目のエピソードでは、彼は link_to_function メソッドを使用していますが、これは明らかに Rails 4.1 では使用できなくなりました。

どうやって交換しようか悩んでいます。私はlink_toを試みており、同様の質問を投稿した他の人のために提案された解決策の多くを試しましたが、役に立ちませんでした.

これが現時点でのビューのパーシャルの外観です(ただし、多くのことを試しました...)

<p class="offset1 fields">
   <%= f.hidden_field :_destroy %>
   <%= link_to "remove", '#', onclick: 'remove_fields("this")' %>
</p>

そして、これが remove_fields() 関数を含む私の .js.coffee ファイルです:

remove_fields = (link) -> 
    $(link).previous("input[type=hidden]").value = 1
    $(link).up(".fields").hide

この関数は、フォームからフィールドを削除することになっていますが、代わりに、関数を呼び出さずに URL に「#」を追加するだけです。

ビューからアセットの javascript (coffeescript) 関数にリンクする最良の方法は何ですか?

4

1 に答える 1

5

これに対処する良い方法は次のとおりです。

a) href 属性を「javascript:void(0);」に設定します。b) DOM ID または CSS クラス属性をリンクに設定します

<%= link_to "remove", "javascript:void(0);", id="remove_link" %>

c) 要素に js クリック リスナーを追加します (これが適切な coffeescript 構文であるかどうかを確認してください)

$ ->
  $('#remove_link').click = ()-> 
    $(link).previous("input[type=hidden]").value = 1
    $(link).up(".fields").hide

d) html 要素で onclick: を使用することは常に避けてください。

アップデート:

e)コードで機能する代替案を次に示します(コメントの後):

$ ->
  $('#remove_link').click = ()-> 
    $('.offset1.fields input').attr('value', 1);
    $('.offset1.fields').hide();
于 2014-09-22T20:31:57.860 に答える