Metodo Destroy não funciona

178 views
Skip to first unread message

Phillip Jonathan

unread,
Jul 10, 2017, 6:37:26 PM7/10/17
to rails-br
Ola pessoal, estou com um problema estranho em uma aplicação simples. Quando chamo o método destroy do meu controller, ele ao invés de excluir o item, chama o metodo show e mostra esse item. Nessa aplicação estou utilizado o Ruby on Rails como API e BackboneJS no front mas acho que não setei o backbone corretamente portando não sei se esta funcionando.

Agradeço demais a ajuda dos amigos.

Segue o Controller e o meu index com o link de delete:

Index:

<div class="col-md-2">
<p><%= link_to item, method: :delete, data: {confirm: "Are you sure?"} do %></p>
<i class="fa fa-trash fa-lg"></i>
<% end %>
</div>
Controller:

class ItemsController < ApplicationController
  before_filter :find_items, only: [:show, :edit, :update, :destroy, :complete]
  
  def index
  @items = Item.all

  respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @items }
    end
  end

  def show
  end

  def new
  @item = Item.new

  respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @item }
    end
  end

  def create
  @item = Item.new(item_params)
 
  respond_to do |format|
      if @item.save
        format.html { redirect_to @item, notice: 'Item was successfully created.' }
        format.json { render json: @item, status: :created, location: @item }
      else
        format.html { render action: "new" }
        format.json { render json: @item.errors, status: :unprocessable_entity }
      end
    end
  end

  def edit
  end

  def update
 respond_to do |format|
      if @item.update_attributes(item_params)
        format.html { redirect_to @item, notice: 'Item was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @item.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
  @item.destroy
 
    respond_to do |format|
   format.html { redirect_to root_path, method: :delete, notice: 'Item was successfully destroyed'}
      format.json { head :no_content}
    end
  end
  
  def complete
    respond_to do |format|
      if @item.update_attribute(:completed_at, Time.now)
        format.html { redirect_to root_path, notice: 'Item was successfully completed!' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @item.errors, status: :unprocessable_entity }
      end
    end 
  end

  private

  def item_params
  params.require(:item).permit(:title, :descrption, :id)
  end

  def find_items
    @item = Item.find(params[:id])
  end
end

Alex Takitani

unread,
Jul 11, 2017, 7:17:55 AM7/11/17
to rail...@googlegroups.com
Veja o console, a requisição está indo como get, por isso a rota que responde é show.

Quem faz o method delete funcionar nos links é o UJS ( https://github.com/rails/jquery-ujs

Deve estar faltando no seu projeto.

--
--
Você recebeu essa mensagem porquê está inscrito no Google
Groups "rails-br".
Para enviar uma mensagem para o grupo, mande um email para rail...@googlegroups.com
Para se descadastrar, mande um e-mail para
rails-br+unsubscribe@googlegroups.com
Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: https://goo.gl/BHB0wS
---
Você recebeu essa mensagem porque está inscrito no grupo "rails-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para rails-br+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Phillip Jonathan

unread,
Jul 11, 2017, 11:44:41 AM7/11/17
to rails-br
Segue meu Genfile e application.js:


gem 'rails', '3.2.20'

#group :development do
gem 'pg'
gem "active_model_serializers", "~> 0.8.0"
gem 'simple_form', '~> 1.0', '>= 1.0.1'
gem 'bootstrap-sass', '~> 2.0'
gem 'strong_parameters', '~> 0.2.3'
gem 'sprockets', ' 2.2.1'

# BackboneJS gems
gem "rails-backbone"
gem 'marionette-rails'
#end

#group :test do
# Tests
gem 'rspec-rails'
#end

group  :production do

end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails',   '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require application/app
//= require underscore
//= require backbone
//= require backbone_rails_sync
//= require backbone_datalink
//= require backbone/checklist

Marcelo Junior

unread,
Jul 11, 2017, 12:03:25 PM7/11/17
to rail...@googlegroups.com
tente renomear //= require jquery_ujs para //= require rails-ujs

Phillip Jonathan

unread,
Jul 11, 2017, 12:08:14 PM7/11/17
to rails-br
Efetuei a alteração mas não surtiu efeito. Inclusive efetuei teste com os dois juntos.

Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: https://goo.gl/BHB0wS
---
Você recebeu essa mensagem porque está inscrito no grupo "rails-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para rails-br+u...@googlegroups.com.

Alex Takitani

unread,
Jul 11, 2017, 12:19:48 PM7/11/17
to rail...@googlegroups.com
Verifique o console do browser, nao tem algum erro de javascript?


Visite o grupo em http://groups.google.com/group/rails-br?hl=pt-BR
Leia nossa política de uso: https://goo.gl/BHB0wS
---
Você recebeu essa mensagem porque está inscrito no grupo "rails-br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para rails-br+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages