Рубин на рельсах - проблема link_to () - PullRequest
2 голосов
/ 08 января 2011

Я сделал эту ссылку, чтобы уничтожить комментарий:

    <%= link_to 'Destroy Comment', [comment.post, comment],
    :confirm => 'Are you sure?',  :method => :delete %>

Предполагается, что для отправки в действие уничтожения в comments_controller.

проблема в том, что он ищет действие 'show' вместо действия 'destroy':

   Unknown action

   The action 'show' could not be found for CommentsController

Как вы думаете, вы знаете, почему он это делает?

Спасибо

Одед

редактировать: проблема решена, я использовал 'button_to'

Ответы [ 5 ]

5 голосов
/ 08 января 2011

Rails 3:

Когда вы используете JQuery, убедитесь, что у вас есть правильный файл rails.js (https://github.com/rails/jquery-ujs). Когда вы используете Prototype, правильный файл rails.js ужеКроме того, убедитесь, что в заголовок макета добавлено следующее:

<%= csrf_meta_tag %>

А также убедитесь, что загружается как среда JS, так и файл rails.js.

<%= javascript_include_tag "jquery", "rails" %>
# or
<%= javascript_include_tag "prototype", "rails" %>

Просто примечание - Вы также можете указать ссылку Googleapis: http://scriptsrc.net/.

Когда вы используете :method => :delete внутри ссылки, будет создан следующий HTML-код:

<a href="/comments/1" data-method="delete">Click me!</a>

Как видите, используется атрибут данных HTML5. Файл rails.js автоматически помещает события щелчка по ссылкам с этими атрибутами. Когда установлено data-method="delete", запрос будет выполнен с помощьюУДАЛИТЕ HTTP-метод. Поэтому нажатие на него приведет к уничтожению комментария. Кроме того, установка: подтверждение создаст атрибут подтверждения данных, который будет делать то, что вы ожидаете.

Rails 2:

Когда вы используете Prototype, :method => :delete будет работать автоматическисоюзник.Просто убедитесь, что вы включили правильные файлы Javascript:

<%= javascript_include_tag :defaults %>

При использовании JQuery вы должны установить плагин 'jrails' (https://github.com/aaronchi/jrails). Он позволяет вам использовать те же помощники Prototype для JQuery. Плагин используетстарая версия JQuery, поэтому убедитесь, что вы обновили ее.

Я точно не знаю, использует ли атрибут: method Prototype в Rails 2 или просто обычный Javascript.даже нужен Prototype или JQuery для атрибута: method в Rails 2.

Как я уже говорил в комментарии: я никогда не использую button_to для удаления ссылок. Вы можете так же легко заставить его работать с link_to.Я знаю, что большинство людей используют этот помощник при создании ссылок такого рода. Надеюсь, это поможет. :) 1037 *

1 голос
/ 10 сентября 2011

ОШИБКА: ActionController :: RoutingError (Нет подходящих маршрутов [GET] "/javascripts/jquery.js")

Решение, скачать: http://code.jquery.com/jquery-1.6.3.js

ОШИБКА: AbstractController :: ActionNotFound (Не удалось найти действие 'show' для CommentsController)

Решение, скачать: https://github.com/rails/jquery-ujs/raw/master/src/rails.js

В rails 3.1.0 сохраните вышеуказанные js-файлы в app / public / javascripts / Переименуйте или удалите существующие js-файлы.

0 голосов
/ 26 августа 2014

Убедитесь, что вы указали //= require jquery и //= require jquery_ujs (в таком порядке) в файле application.js, в \app\assets\javascripts.

0 голосов
/ 22 февраля 2012

Я только что столкнулся с той же проблемой с Rails 3. Я использую jQuery с обновленным файлом rails.js. То, что исправило это для меня, было чем-то простым - используйте: method =>: delete, а не: method =>: destroy.

=link_to( 'delete account', user_admin_path(current_user.id), :confirm => "Deleting your account is irreversible!! Are you sure you wish to continue?", :method => :delete )

А в шапке у меня есть:

= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js", "jquery.colorbox-min", "jquery.validate.min", "rails"

Работает как шарм:)

0 голосов
/ 21 июня 2011

Я только что решил эту проблему в своем собственном приложении (rails 3).Я выполнил шаги для rails 3 и, что наиболее важно, установил правильный файл rails.js в мою папку public/javascripts.Это не сработало, пока я не установил rails.js.

Я выбрал следующее: https://raw.github.com/rails/jquery-ujs/master/src/rails.js

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