当前位置:  开发笔记 > 后端 > 正文

如果我在不同的子目录中有多个控制器,如何使用redirect_to?

如何解决《如果我在不同的子目录中有多个控制器,如何使用redirect_to?》经验,为你挑选了1个好方法。

我已经创建了一个小应用程序来学习RoR.(图书数据库)它由只读区域和读写管理区域组成.

在我首先使用管理功能之后,我已将控制器移动到子目录中并创建了只读控制器.

现在,当我在管理区域更新书籍时,该redirect_to功能会重定向到只读区域.

我错过了什么?

这是我正在使用的代码:

class Admin::BooksController < ApplicationController
  
  def update
    @book = Book.find params[:id]
    respond_to do |format|
      if @book.update_attributes params[:book]
        flash[:notice] = "Book updated"
        format.html { redirect_to @book }
        format.xml { head :ok }
      else
        
      end
    end
  end
  
end

此更新本身有效,但它重定向到我/books/1,但我希望它重定向到/admin/books/1.我可以硬编码正确的路径,但我想这不是很好的风格.

什么是正确的方法?

PS:如果您需要更多信息,请发表评论.



1> srboisvert..:

你告诉它重定向到书,因为你正在使用rails内置神奇的识别它应该对@book对象做什么(这是建立一个使用书籍控制器显示书籍的URL.

format.html { redirect_to @book }

如果你想要它去其他地方,你需要明确你想要它去哪里使用哈希 url_for

format.html { redirect_to :controller => 'admin/book', :action => 'show', :id => @book   }

或者使用像klew指出的路径.

所以更多细节 -

redirect_to (@book) 要么

redirect_to  book_path(@book)

都是这个的捷径:

redirect_to :controller => book, :action => 'show', :id => @book.id

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有