문제

나는 대략 지침에 따라 레일 양식을 설정했습니다. 이것 Railscast.

양식의 코드는 다음과 같습니다.

<% 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_")가있어 문제입니다. 솔루션이 당황스럽게 단순하다고 생각하지만 보지 못합니다. 팁이 있습니까?

도움이 되었습니까?

해결책 2

나는 Ryan 's와 비슷한 솔루션을 사용하게되었지만 의견에 쓴 것처럼 추가 변경을해야했습니다. 의 형태의:

<%= 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"}

다른 팁

<%= check_box_tag "todo_ids[]", todo.id, false, :id => "todo_id_#{todo.id}" -%> 또는 당신이 원하는 신분증이 무엇이든.

나는 수동으로 todo_ids []라는 이름을 부여하는 겉보기에 해킹 된 특성과 sanitize_to_id (name)를 호출하는 메소드 코드로 인한 check_box_tag가있는 버그라고 생각합니다. 나는 어제 이것을 달렸고 패치를 고려하고 있습니다.

이것을 시도하고 그것이 작동하는지 알려주시겠습니까?

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

이것은 예상되는 행동입니다 check_box_tag, 처럼 거부 된 수정에 대한이 의견은 설명합니다.

당신이 사용할 수있는 collection_check_boxes 이와 같이 ( 구문, 죄송합니다) :

# Accumulate todos in a params hash like { todos: { to_complete: [] } }
= collection_check_boxes(:todos, :to_complete, @incomplete_todos, :id, :name) do |todo_builder|
  = todo_builder.label do
    # This is the result of calling :name on the todo, as specified
    # calling the helper
    = todo_builder.text
    = todo_builder.check_box

물론 블록 내부의 부분을 사용하고 내부를 통과하고 사용할 수 있습니다.

더 많은 옵션을 확인하십시오 API 문서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top