Item
- это класс модели, а Items
- класс контроллера. Теперь я пытаюсь использовать обратную маршрутизацию с параметром, но он терпит неудачу. Как это исправить?
Посмотреть:
@(item: Item)
<a href="@routes.Items.delete(@item.id)">delete</a>
маршруты:
GET /items/$id<[0-9]+> controllers.Items.show(id: Long)
GET /items/add controllers.Fruits.addForm()
POST /items/add controllers.Items.add()
DELETE /items/$id<[0-9]+> controllers.Fruits.delete(id: Long)
ошибка, которую я получаю
illegal start of simple expression
и он указывает на второй символ @
Могло бы также привести обсуждение в комментариях к фактическому ответу. Ваш код не компилировался, потому что в аргументе был добавлен дополнительный @
.
Что касается того, почему вы не попадаете в конечную точку DELETE, это потому, что вы не можете иметь регулярную ссылку HTML, запускающую глагол, отличный от GET, и вы можете отправлять формы только POST. Если вы хотите вызывать удаление, вам необходимо использовать JavaScript. Например, вы можете использовать метод jQuery ajax
с типом, установленным на "DELETE"
. В вашем случае вы можете создать обработчик onclick
который, в свою очередь, отправляет запрос ajax. Также обратите внимание, что не все браузеры поддерживают глагол DELETE, как это.