2013-04-30 3 views
7

У меня проблема с несколькими удалениями с использованием флажков. когда я удаляю несколько записей, он получает идентификаторы для флажков, но он передает имя метода в качестве параметра и показывает мне ошибку.Rails 3 уничтожает несколько записей через флажки

вот мой код,

**In my Controller method :** 
    def destroy 
    @ticket = current_user.tickets.find(params[:ticket_ids]) 
    @ticket.destroy 

    respond_to do |format| 
    format.html { redirect_to tickets_url } 
    format.json { head :no_content } 
    end 
    end  


def destroy_multiple 
    Ticket.destroy(params[:tickets]) 

    respond_to do |format| 
    format.html { redirect_to tickets_path } 
    format.json { head :no_content } 
    end 
end 

**In my index.html.erb** 

<%= form_tag destroy_multiple_tickets_path, method: :delete do %> 
. 
. 
<td class="table-icon"> 
    <%= check_box_tag "ticket_ids[]", ticket.id %> 
</td> 
. 
. 
<%= submit_tag "Delete selected" %> 

**In routes.rb** 

resources :tickets do 
    collection do 
    delete 'destroy_multiple' 
    end 
end 

он показывает мне эту ошибку ::::

Couldn't find Ticket with id=destroy_multiple [WHERE "tickets"."user_id" = 1] 

проходит arguement ::::

{"utf8"=>"✓", 
    "_method"=>"delete", 
    "authenticity_token"=>"yHeRR49ApB/xGq1jzMTdzvix/TJt6Ysz88nuBEotHec=", 
    "ticket_ids"=>["11", 
    "12"], 
    "commit"=>"Delete selected", 
    "id"=>"destroy_multiple"} 

ответ

3

сделать

Ticket.destroy(array_of_ids) 
2

Привет, Обновление контроллера код также ..

def destroy_multiple 
@tickets = Ticket.find(params[:ticket_ids]) 
@tickets.each do |ticket| 
ticket.destroy 
end 
end 
+0

где и использовать "@ticketsts" Это ??? это исправление и совершенный код .... "Ticket.destroy (params [: ticket_ids])" – SSR

+0

его опечатка, я исправил его @SSR – Radhakrishna

2

Попробуйте

Ticket.where(:id => params[:ticket_ids]).destroy_all 
4

Шаг: 1 В routes.rb

resources :tickets do 
    collection do 
    delete 'destroy_multiple' 
    end 
end 

Шаг: 2 В _form.html.erb

<%= form_tag destroy_multiple_tickets_path, method: :delete do %> 
    <td class="table-icon"> 
    <%= check_box_tag "ticket_ids[]", ticket.id %> 
    </td> 
    <%= submit_tag "Delete selected" %> 
<%end%> 

Stpe: 3 В контроллере

def destroy_multiple 
    Ticket.destroy(params[:tickets]) 
    respond_to do |format| 
     format.html { redirect_to tickets_path } 
     format.json { head :no_content } 
    end 
end 
Смежные вопросы