У меня возникли проблемы с пониманием инструкции redirect_to. У меня есть модель "Книга" (с логическим атрибутом "чтение") и контроллер "книги". Теперь я создал второй контроллер «Админы», имеющий методы: index и change. Представление индекса просто отображает список всех книг со ссылкой на метод изменения:
<% @Books.each do |d| %>
<%= d.title %><br>
<% if d.read==true %>
<%= link_to "mark unread", change_path(:id=>d.id)%>
<% else %>
<%= link_to "mark read", change_path(:id=>d.id)%>
<%end %>
Теперь метод изменения просто изменяет атрибут «чтение»:
@book=Book.find(params[:id])
if @book.read==true
@book.update_attributes(:read => false)
else
@book.update_attributes(:read => true)
end
redirect_to action: "index"
Проблема в том, что rails пытается перенаправить меня на действие show, используя :id в качестве параметра... (возможно, потому, что change_url — это /admins/change?id=3) Но я просто хочу, чтобы меня перенаправили обратно в представление index "/ администраторы"
есть способ? похоже, что рельсы всегда пытаются перенаправить на действие просмотра, если в качестве параметра есть идентификатор
Большое спасибо
PS: route.rb содержит ресурсы:админы и ресурсы:книги
rails tries to redirect me to the show action using the :id as a parameter
? Вы получаете какую-либо ошибку? Если да, поделитесь журналом сервера, созданным для него. - person Kirti Thorat   schedule 06.04.2014