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 的魔法有点太多了?
路由助手的动态解析是通过 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 的魔法有点太多了?
如果你不付出努力去理解它,它只是魔法。