我对redirect_to语句不太理解。我的模型是"Book"(具有布尔属性"read"),控制器是"books"。现在我创建了一个名为"Admins"的第二个控制器,其中包含两种方法:index和change。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 %>
现在的更改方法只更改了“read”属性:
@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)。但我只想被重定向回索引视图“/admins”。
有什么办法吗?似乎如果有一个id作为参数,Rails总是尝试重定向到视图操作。
非常感谢。
PS: routes.rb包含resources:admins和resources:books。
rails 尝试使用 :id 作为参数将我重定向到 show 操作
?你有收到任何错误吗?如果有,请分享相应的服务器日志。 - Kirti Thorat