REST уничтожить ссылку создать проблему - PullRequest
1 голос
/ 02 апреля 2010

Я использую rails beta 3, и у меня есть страница с именем index.html.erb для контроллера обсуждений. На этой странице у меня есть следующая ссылка:

<%= link_to 'Delete', {:action=>'destroy', :id=>@discussion}, :confirm=>"Are you sure", :method=>'post' %>

Что должно генерировать ссылку для удаления обсуждения, однако сгенерированный html равен

<a href="/discussions/1" data-confirm="Are you sure" data-method="post" rel="nofollow">Delete</a>

Который всегда направляется к действию шоу. Я думаю, что href должен быть / Discussions / Destroy / 1. Но по какой-то причине это не так.

Есть идеи? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 02 апреля 2010

Это правильный href, но метод должен быть :delete. Вам также необходимо убедиться, что вы правильно настроены с помощью нового ненавязчивого способа работы с javascript в rails 3. Вам может понадобиться добавить помощник csrf_meta_tag, как описано в этой ссылке:

http://blog.loopedstrange.com/modest-rubyist-archive/rails-3-ujs-and-csrf-meta-tags

0 голосов
/ 26 декабря 2011

Вы, вероятно, используете рельсы 3.1

попробуй заменить

<%= javascript_include_tag :defaults %>

с

<%= javascript_include_tag "application" %>
0 голосов
/ 02 апреля 2010

При просмотре руководства по маршрутизации ссылка для удаления должна быть в форме, как в вашем примере. За исключением того, что метод должен быть DELETE вместо POST. Но это может быть совместимой проблемой / исправлением, поскольку метод DELETE «менее» поддерживается по сравнению с GET и POST.

Действие show активируется с помощью метода GET для вашей ссылки, что явно не относится к вашей ссылке.

Так вы уверены, что ваши маршруты настроены правильно? Что-то вроде:

map.resources :discussions

Редактировать : Я только что увидел, что в вашем коде link_to есть ошибка, :method должен быть установлен в :delete:

<%= link_to 'Delete', {:action=>'destroy', :id=>@discussion}, :confirm=>"Are you sure", :method=>:delete %>

Кроме того, вы можете использовать что-то вроде discussion_path(@discussion_item) для создаваемого пути (URL). Это более понятно, чем создавать путь вручную. Для этого вам понадобится настройка маршрута, как указано выше, и переменная @discussion_item, содержащая информацию о текущей (показанной) странице.

Итак, ваша link_to строка становится такой:

<%= link_to 'Delete', discussion_path(@discussion_item), :confirm=>"Are you sure", :method=>:delete %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...