0

ネストされたモデル フォームの railscast をたどろうとしていますが、Java Script. 私はRails2 週間ほど を使用していますがJavaScript、 に遭遇したのはこれが初めてです。

キャストが示唆するように、フォームから要素を削除しようとしていますが、次のエラーが発生しています。(Chrome のデバッグ ツールを使用してエラーを表示しています)

Uncaught TypeError: Object [object Object] has no method 'previous' application.js?body=1:10222 remove_class_row
application.js?body=1:10222
onclick read:95

これは私のビュー、/app_root/app/views/classifications/read.html.erb です:

<table id="classification_read_table">
    <tr ><td id="classification_read_table_td">
        <b>Classification</b>
    </td></tr>
    <%= form_tag read_build_path  %>
        <% @classes.each do |f| %>
            <div class="class_row">
                <tr >
                    <td class="classification_read_table_td">
                        <%= fields_for "class_is[]", f do |g| %>
                        <%= g.label :name %>
                        <%= g.text_field :name %>
                        <%= g.hidden_field :_destroy%>
                        <%= link_to_function "remove", "remove_class_row(this)" %>
                    </td>
                </tr>
            </div>
        <% end %>
    <% end %>
</table>

これは私の JS ファイル app_root/app/assets/javascript/application.js です:

function remove_class_row(link) {
    $(link).previous("input[type=hidden]").value = "1"; //Error on this line: 
    $(link).up(".class_row").hide();
}

Railsキャストが示すようにJavaScriptを実行しているため、何が問題なのかわかりません。私の最初の考えは、私がやろうとしていることは非推奨になるということですか? または、何らかの理由で HTML が正しく設定されていません。

誰かが私が見逃している平凡な詳細を指摘してくれることを願っています.

ありがとう!!

4

1 に答える 1

1

を探していると思います.prev()。また、.val()jQuery でフィールド値を設定するために使用する必要があります。

$(link).prev("input[type=hidden]").val("1");
于 2013-10-19T19:17:48.467 に答える