加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如果我在不同的子目录中有多个控制器,如何使用

发布时间:2020-12-17 03:57:28 所属栏目:百科 来源:网络整理
导读:我已经创建了一个小应用程序来学习RoR. (图书数据库)它由只读区域和读写管理区域组成. 在我首先使用管理功能之后,我已将控制器移动到子目录中并创建了只读控制器. 现在,当我在管理区域更新书籍时,redirect_to功能会重定向到只读区域. 我错过了什么? 这是我
我已经创建了一个小应用程序来学习RoR. (图书数据库)它由只读区域和读写管理区域组成.

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

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

我错过了什么?

这是我正在使用的代码:

class Admin::BooksController < ApplicationController
  <snip>
  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
        <snip>
      end
    end
  end
  <snip>
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读