理解:redirect_to @object(通常在 Rails create-action 中使用)

问题描述 投票:0回答:1

来自 Ruby on Rails 指南教程

def create
  @article = Article.new(title: "...", body: "...")

  if @article.save
    redirect_to @article # How does this work?
  else
    render :new, status: :unprocessable_entity
  end
end

关于“重定向到哪个视图?”的信息: 如何基于这里提供的@article-object来完成?

我不明白“特定类的对象”和特定路线之间的映射是如何完成的。

有没有可能,Rails 的魔法有点太多了?

ruby-on-rails
1个回答
0
投票

路由助手的动态解析是通过 ActionDispatch::Routing::PolymorphicRoutes 完成的。

它本质上的作用是,当您传递模型实例或类时,它使用

ActiveModel::Naming
提供的 API 来获取单数路由键名称:

irb(main):006:0> Article.model_name.singular_route_key
=> "article"

然后使用该名称动态调用

article_path
路由帮助器方法。

irb(main):005:0> app.polymorphic_path(article)
=> "/articles/3"

这不仅在重定向时使用,而且广泛用于框架的其他部分,例如表单和链接。

有没有可能,Rails 的魔法有点太多了?

如果你不付出努力去理解它,它只是魔法。

© www.soinside.com 2019 - 2024. All rights reserved.