8

我正在研究 ruby​​ on rails 指南,即http://guides.rubyonrails.org/layouts_and_rendering.html上的“布局和渲染”主题

我对将实例变量传递给redirect_to方法感到困惑。这怎么可能?我认为redirect_to与重定向到另一个网页或网址有关。

在指南中给出的示例中,它说明了以下内容:

2.2.2 渲染一个动作的视图

如果要渲染与同一模板中的不同操作对应的视图,可以使用带有视图名称的 render:

def update
  @book = Book.find(params[:id])
  if @book.update_attributes(params[:book])
    redirect_to(@book)
  else
    render "edit"
  end
end

渲染“编辑”完全有意义,它将再次渲染该新表单。但是世界上到底发生了redirect_to(@book)什么?那到底要渲染什么,书籍对象将如何被重定向到?顺便说一句,图书模型有列、名称、作者、页面等......

4

2 回答 2

19

重定向到文档

redirect_to(options = {}, response_status = {}) 将浏览器重定向到选项中指定的目标。 记录- 将通过使用选项调用 url_for 生成 URL,该选项将引用该记录的命名 URL。

因此,当一个redirect_to(@book) @book特定的记录带有id.

因此,关联的记录(在本例中为@book)显示方法用作模板。

除了上述之外,如果您查看routes.rb定义这些路径的文件,您会注意到

resources :books

现在这条路线基本上被翻译为(你可以通过运行看到rake routes

    books GET    /books(.:format)                   books#index
          POST   /books(.:format)                   books#create
 new_book GET    /books/new(.:format)               books#new
edit_book GET    /books/:id/edit(.:format)          books#edit
     book GET    /books/:id(.:format)               books#show
          PUT    /books/:id(.:format)               books#update
          DELETE /books/:id(.:format)               books#destroy

注意book GET /books/:id books#show- 当你这样做时会匹配redirect_to(@book)

于 2013-01-06T04:01:28.177 回答
0

它会重定向到一本书,例如“/books/65”

于 2013-01-06T03:53:04.903 回答