我已经创建了一个小应用程序来学习RoR.(图书数据库)它由只读区域和读写管理区域组成.
在我首先使用管理功能之后,我已将控制器移动到子目录中并创建了只读控制器.
现在,当我在管理区域更新书籍时,该redirect_to
功能会重定向到只读区域.
我错过了什么?
这是我正在使用的代码:
class Admin::BooksController < ApplicationControllerdef 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:如果您需要更多信息,请发表评论.
你告诉它重定向到书,因为你正在使用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