2014-11-29 4 views
1

Я использую Rails 3 и пытаюсь использовать Rails 4. Я после ToDo учебника здесь: http://www.codelearn.org/ruby-on-rails-tutorial/introduction-views-layouts-helpers-assets-pipelineRails 4 - Как удалить маршрут тракта

Я пытаюсь удалить элемент ToDo с помощью Rails ' link_to 'helper method, и искали онлайн и не смогли заставить его работать в течение последних 90 минут, поэтому я решил обратиться за помощью.

Вот сообщение об ошибке я получаю:

Routing Error 
No route matches [DELETE] "/todos/delete_path" 

Вот мои «грабли маршруты» из терминала:

Prefix Verb URI Pattern    Controller#Action 
todos_index GET /todos/index(.:format) todos#index 
todos_delete DELETE /todos/delete(.:format) todos#delete 

Вот является «link_to» вспомогательный метод из внутренней части :

index.html.erb 

<%= link_to 'Delete last todo', 'delete_path', method: :delete %> 

Вот мой:

routes.rb 

Rails.application.routes.draw do 
    get 'todos/index' 
    # get 'todos/delete' 
    match 'todos/delete' => 'todos#delete', via: :delete 

Вот мой:

todos_controller.rb 

class TodosController < ApplicationController 
    def index 
    # @todo_array = ['Buy Milk', 'Buy Soap', 'Pay bill', 'Draw Money'] 
    @todo_items = Todo.all 
    render :index 
    end 

    def delete 
    #put delete logic here 
    @todo_items = Todo.last 
    @todo_items.destroy 
    end 

end 

Благодарим Вас за время, чтобы посмотреть на мою проблему!

ответ

1

Это, как вы бы написать уничтожить метод:

def destroy 
    @todo = Todo.last 
    @todo.destroy 
    redirect_to todos_index_path #or wherever you want to redirect user after deleting the tod 
end 

Кроме того, я бы просто использовать RESTful маршруты:

Rails.application.routes.draw do 
    resources :todos, only: %i(index destroy) 
end 
Смежные вопросы