Rails 3 link_to удалить вызов метода метода show? - PullRequest
4 голосов
/ 09 февраля 2012

Эй, я видел несколько постов по этому вопросу, но у меня все еще есть проблемы с вызовом: method => 'delete' и обращением к методу show моего контроллера. Метод destroy работает, как и ожидалось, в том смысле, что он удаляет комментарий, но после выполнения запроса он выдает 404 на GET. Вот код:

<%= link_to 'delete', "/events/#{@event.id}/comments/#{comment.id}.js", 
        :confirm => 'Are you sure?', 
        :method => :delete, 
        :remote => true %>

Вот метод контроллера:

def destroy 
  @comment = @event.comments.find(params[:id])
  @comment.destroy
  redirect_to do |format|
    format.html # redirect_to @event, :notice => "comment deleted" }
    format.js { render 'destroy.js.erb' }
  end
end

Я слышал, что это может быть связано с тем, что не используется button_to, но я попытался использовать button_to, а не link_to, но это делает то же самое.

Я также слышал, что это может быть связано с некоторыми проблемами, связанными с тем, как вы используете jquery в вашей установке, но я чувствую, что сомневаюсь в этом, но вот как я вызываю jquery на всякий случай (приложение. html.erb):

<%= javascript_include_tag 'jquery-1.5.2.min.js', 'rails', 'application' %>
  <%= javascript_include_tag 'jquery-ui-1.8.17.custom.min.js' %>

Когда я смотрю вывод сервера rails, я вижу, что он говорит:

Redirected to http://0.0.0.0:3000/events/1/comments/35
Completed 302 Found in 132ms
ACTION NAME application


Started GET "/events/1/comments/35" for 127.0.0.1 at Wed Feb 08 16:31:43 -0800 2012

AbstractController::ActionNotFound (The action 'show' could not be found for CommentsController):

Спасибо за помощь!

Ответы [ 4 ]

1 голос
/ 05 июня 2013

Rails 3.1 и выше очищает нас от этого ... rails.js пропал.Jquery_ujs является частью гема, но файл НЕ должен находиться в вашем каталоге javascript: в частности, мой файл jquery_ujs был старым и все еще «жил» в моем каталоге assets / javascript.У него все еще были .live методы, которые устарели.Удалите файл !!
Сохраните гем 'jquery-rails', '~> 2.1' # REF: https://github.com/rails/jquery-ujs Сохраните // = require jquery и // = require jquery_ujs и // = require_tree.В вашем файле application.js убедитесь, что вы обновили установку gem и bundle, чтобы получить последнюю версию gem.Если выдается ошибка javascript, как и в случае с «подлым» делом, остальная часть link_to js не будет работать.Теперь диалог удаления и подтверждения работает нормально.Виновным был старый jquery_ujs.

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

Возможно, проблема с файлом config/routes.rb.Если более ранняя запись в файле routes.rb соответствует events/:id/comments/:id и указывает на comments#show, это может вызвать эту ошибку.

0 голосов
/ 04 мая 2012

format.html может вызвать это.Измените эту строку на format.html { render :nothing => true }

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

Я бы позаботился о том, чтобы в вашем приложении была правильная версия rails.js.Теперь rails.js позаботится о том, чтобы ссылки для удаления действительно использовали метод delete, поэтому вам может потребоваться обновить файл rails.js.Какую версию рельсов вы используете?

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