2013-04-30 16 views
7

Ho un problema con l'eliminazione multipla utilizzando le caselle di controllo. quando sto cancellando più record ottiene gli ID per le checkbox ma sta passando un nome di metodo come parametro e mi mostra un errore.Rails 3 distrugge più record tramite le caselle di controllo

qui è il mio codice,

**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 

mi mostra questo errore ::::

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

passaggi arguement ::::

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

risposta

3

fare

Ticket.destroy(array_of_ids) 
2

Ciao, aggiornare il controller codice analogamente ..

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

dove u usare "@ticketsts" questo ??? questa è la correzione e il codice perfetto .... "Ticket.destroy (params [: ticket_ids])" – SSR

+0

è un refuso, l'ho corretto @SSR – Radhakrishna

2

Prova questa

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

Fase: 1 In routes.rb

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

Passo: 2 In _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%> 

rieseguire interamente: 3 controller

def destroy_multiple 
    Ticket.destroy(params[:tickets]) 
    respond_to do |format| 
     format.html { redirect_to tickets_path } 
     format.json { head :no_content } 
    end 
end 
Problemi correlati