Маршрутизация HTTP-глаголов в Rails - PullRequest
1 голос
/ 07 июля 2010

Я пытаюсь направить только глагол http.Допустим, у меня есть ресурс комментариев:

map.resources :comments

И я хотел бы иметь возможность уничтожить все комментарии, отправив запрос DELETE /comments.Т.е. я хочу иметь возможность отображать только http-глагол без части «action name» маршрута.Возможно ли это?

Приветствия

Ответы [ 2 ]

2 голосов
/ 07 июля 2010

Вы можете сделать это:

map.resources :comments, :only => :destroy

, который создает маршрут, подобный следующему (вы можете проверить с помощью rake routes)

DELETE /comments/:id(.:format) {:controller=>"comments", :action=>"destroy"}

Но учтите, что RESTful destroy предназначена для удаления конкретной записи, а не всех записей, поэтому этот маршрут все еще ожидает параметр: id. Хак может состоять в том, чтобы передать какое-нибудь дозорное значение для: id, представляющего «все» в контексте вашего приложения.

С другой стороны, если ваши комментарии принадлежат другой модели, то удаление другой модели также / должно удалить комментарии. Обычно так происходит несколько удалений строк.

1 голос
/ 07 июля 2010

Поскольку это не стандартное действие RESTful, вам нужно будет использовать пользовательский маршрут.

map.connect '/comments', 
  :controller => 'comments',
  :action => "destroy_all",
  :conditions => { :method => :delete }

В вашем контроллере:

class CommentsController < ApplicationController
  # your RESTful actions here

  def destroy_all
    # destroy all your comments here
  end
end

В поле зрения, вызывайте так:1007 *

<%= link_to "delete all comments", 
        comments_path,
        :method => :delete, 
        :confirm => "Are you sure" %>

пс.Я не тестировал этот код, но думаю, что он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...