2

このRailscastの指示にほぼ従って、Rails フォームをセットアップしました。

フォームのコードは次のとおりです。

<% form_tag complete_todos_path, :method => :put do %>
    <ul>
    <div id="incomplete_todos">
    <% @incomplete_todos.each do |todo| %>
        <%= render :partial => todo %>
    <% end %>
    </div>
    </ul>
    <%= submit_tag "Mark as completed" %>
<% end %>

todo パーシャルのコードは次のとおりです。

<div class="todo">
    <li>
        <%= check_box_tag "todo_ids[]", todo.id %>
        <%=h todo.name %>
        <%= link_to 'edit', edit_todo_path(todo) %>
        <%= link_to 'delete', todo, :confirm => 'Are you sure?', :method => :delete %>
    </li>
</div>

うまく機能していますが、AJAX の実装を開始しようとしており、各チェックボックスに一意の ID が必要です。現在、生成された入力タグは次のようになります。

<input id="todo_ids_" name="todo_ids[]" type="checkbox" value="7" />

すべてのチェック ボックスに同じ ID ("todo_ids_") が割り当てられているため、問題が発生します。解決策は恥ずかしいほど単純だと思いますが、私にはわかりません。任意のヒント?

4

4 に答える 4

7

<%= check_box_tag "todo_ids[]", todo.id, false, :id => "todo_id_#{todo.id}" -%>または、IDにしたいものは何でも。

これは、手動で todo_ids[] という名前を付け、sanitize_to_id(name) を呼び出すメソッド コードを使用するという一見ハックな性質によって引き起こされた check_box_tag のバグであると考えています。昨日これに遭遇したばかりで、パッチを検討しています。

于 2009-06-14T03:48:25.207 に答える
2

最終的に Ryan と同様のソリューションを使用することになりましたが、コメントに書いたように、さらに変更を加える必要がありました。形式:

<%= check_box_tag "todo_ids[#{todo.id}]", todo.id %>

フォームによって呼び出されるアクション:

Todo.update_all(["completed_at = ?", Time.now], :id => params[:todo_ids].keys)

末尾の「params[:todo_ids].keys」に注意してください。これは、パラメーターの書式設定が奇妙であったことに対処するための回避策でした。

"todo_ids" => {"5"=>"5"}
于 2009-06-14T05:37:13.027 に答える
1

これを試して、動作するかどうかお知らせください:

check_box_tag "todo_ids[#{todo.id}]", todo.id %>
于 2009-06-14T03:47:06.960 に答える