Почему в Ruby on Rails используется метод "link_to ... method:: delete"? - PullRequest
1 голос
/ 08 февраля 2012

Я только начал изучать Ruby on Rails, и это вопрос новичка.

Я сделал

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

Мой вопрос:

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

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

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

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

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

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

  • POST <-> Create
  • GET <-> Read
  • PUT <-> Update
  • DELETE <-> Delete

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

2 голосов
/ 08 февраля 2012

Поскольку по умолчанию у вас есть таких маршрутов для ресурсов , и по умолчанию метод DELETE используется для действия уничтожения, а метод PUT используется для обновления. так что если вы сделаете ссылку таким образом:

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

чем он будет указывать на действие GET для URL /products/:id/delete и будет работать, только если вы определите этот маршрут в routes.rb файле

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