我正在研究导轨指南上的红宝石,即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)
世界正在发生什么?究竟是什么呈现以及如何将书籍对象重定向到?顺便说一句,书籍模型有专栏,名称,作者,页面等......
答案 0 :(得分:18)
redirect_to(options = {},response_status = {})重定向 浏览器到选项中指定的目标。 记录 - 将通过调用生成URL 带有选项的url_for,它将引用该命名的URL 记录。
因此,如果redirect_to(@book)
@book
是具有id
的特定记录。
因此,相关记录(在本例中为@book) show 方法用作模板。
除了上述内容,如果您查看定义这些路径的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)
答案 1 :(得分:0)
它会重定向到一本书,例如“/ books / 65”