2012-02-08 4 views
1

Я только начал изучать Ruby on Rails, и это вопрос новичков.Почему Ruby on Rails использует «link_to ... method:: delete»?

Я сделал

$ rails generate scaffold Product blah blah... 

и вот фрагмент из каркасных сгенерированных просмотр файлов.

<td class="list_actions"> 
<a href="/products/1">Show</a><br/> 
<a href="/products/1/edit">Edit</a><br/> 
<a href="/products/1" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a> 
</td> 

Мой вопрос,

Почему Рубин на Rails генерировать ссылку "Destory" таким образом? Метод изменения для «HTTP DELETE» ... и все такое.

Вместо того, чтобы делать это более прямой способ, т.е.

<a href="/products/1/delete" data-confirm="Are you sure?">Destroy</a> 
+4

Если google-бот выдает запрос GET для сканирования вашего веб-сайта, это может привести к удалению всех ваших продуктов! – daniel

+0

@ daniel nub вопрос. делать боты только для обхода ссылок с помощью метода GET (не POST, DELETE, PUT и т. д.)? – hajpoj

+0

Да, боты обычно выдают только запросы GET, хотя, похоже, Googlebot экспериментирует с запросами POST [http://googlewebmastercentral.blogspot.com/2011/11/get-post-and-safely-surfacing-more-of.html] – daniel

ответ

2

Поскольку это является семантическим.

Хотя веб-браузеры обычно только отправлять HTTP GET и POST запросы, семантическая намерение запросов является то, что они отображают один к одному с CRUD глаголов:

  • POST < -> Создать
  • GET < -> Читать
  • PUT < -> Обновление
  • УДАЛИТЬ < -> Удалить

... и, с практической точки зрения, находчивые маршруты отражают это.

2

Поскольку по умолчанию у вас есть such routes for the resources и по умолчанию DELETE метод используется для уничтожения действия и PUT метод используется для обновления. так что если вы сделаете ссылку таким образом:

<a href="/products/1/delete" data-confirm="Are you sure?">Destroy</a> 

чем укажет ПОЛУЧИТЬ действия для URL /products/:id/delete и будет работать только если вы определили, что маршрут в файле routes.rb

Смежные вопросы