【问题标题】:Ruby on Rails - redirect_toRuby on Rails - redirect_to
【发布时间】:2014-04-06 15:01:47
【问题描述】:

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

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

有办法吗?如果有一个 id 作为参数,似乎 rails 总是尝试重定向到视图操作

非常感谢

PS:routes.rb 包含 resources:admins 和 resources:books

【问题讨论】:

  • 你怎么知道rails tries to redirect me to the show action using the :id as a parameter?你有什么错误吗?如果是,请分享为相同生成的服务器日志。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

使用这个

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

或者

redirect_to admins_url

以上两个会引导你到AdminsControllerindex页面。 Rails 无法将其路由到show 操作,除非您从indexAdminsController 操作重定向到show 操作。由于您没有分享AdminsControllerindex 操作代码,我建议您在那里查看。

【讨论】:

    【解决方案2】:

    如果你想清楚地解释redirect_to ...结帐

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多