Ruby on Rails - redirect_to



我在理解redirect_to语句时遇到了一些麻烦。我有一个模型"Book"(带有布尔属性"read")和一个控制器"books"。现在我创建了第二个控制器"管理员",必须使用方法:索引和更改。索引视图只是呈现所有书籍的列表,其中包含指向更改方法的链接:

<% @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 %>

现在 change 方法只更改 "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 试图使用 :id 作为参数将我重定向到 show 操作......(也许是因为change_url是/admins/change?id=3)但我只想被引导回索引视图"/admins"

有办法吗? 似乎 Rails 总是尝试重定向到 View 操作,如果有 id 作为参数

多谢

PS:routes.rb 包含资源:管理员和资源:书籍

使用这个

redirect_to :controller => 'admins', :action => 'index'

redirect_to admins_url

以上两个将引导您进入AdminsControllerindex页面。除非您从AdminsControllerindex操作重定向到show操作,否则 Rails 无法将其路由到show操作。由于您没有共享index操作代码 AdminsController ,我建议您在那里检查。

如果你想清楚地解释redirect_to...收款处

https://gist.github.com/jcasimir/1210155

几天

前我遇到了类似的问题。我建议在您列出书籍和标记/取消标记复选框的表单中执行此操作。

<%= form_for @book,:url => book_index_path do |f| %>

这对我来说效果很好,当我设置一个您创建数据的网站并且用户立即被重定向到同一页面(包括成功/错误消息)时。人工批处理。

相关内容

  • 没有找到相关文章

最新更新