一尘不染

如何在多记录Rails表单中为复选框设置唯一的ID?

ajax

我大致按照
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 %>

这是待办事项部分的代码:

<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_”),这是一个问题。我怀疑解决方案非常简单,但是我没有看到它。有小费吗?


阅读 281

收藏
2020-07-26

共1个答案

一尘不染

我最终使用了类似于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"}
2020-07-26