【问题标题】:What's the use of "get" routes "rails generate controllers" created in routes.rb in rails?在rails的routes.rb中创建的“get”路由“rails generate controllers”有什么用?
【发布时间】:2012-12-26 08:46:39
【问题描述】:

使用命令rails generate controllers post 在rails 中创建新的控制器帖子时,以get 开头的路由将自动插入到routes.rb 的顶部,如下所示:

  get "posts/index"

  get "posts/new"

  get "posts/create"

  get "posts/edit"

  get "posts/update"

  get "posts/show"

我们注意到删除这些路由后,rails 路由的工作方式相同。我们刚刚发现其中一条路由导致 Rails 引擎路由出错,必须将其删除。我们还没有找到关于那些自动生成的路线的文档。这些路线的目的是什么,是否在 rails 应用程序中使用它们?

【问题讨论】:

  • 我不确定您删除这些后路由工作相同的意思。如果您删除这些路由,rails 应用程序不会将请求重定向到控制器,并且您的站点将无法运行。你还有其他路由文件吗?
  • 有资源:routes.rb中的posts。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

“get”是路由引擎支持的 HTTP 动词。可以将 GET 和 POST(以及其他)路由到不同的方法,即使它们访问相同的 URL。也可以只支持某些 URL 的某些动词(就像这里发生的那样)。

关于它们的必要性 - 我们必须查看您的 routes.rb 文件的其余部分才能知道。如果您有默认匹配规则,那么在删除这些规则后可能会生效。

【讨论】:

  • 有资源:routes.rb中的posts。
  • “资源”行扩展为您在上面粘贴的内容的子集。有关详细信息,请参阅 Rails 路由指南:guides.rubyonrails.org/routing.html#resources-on-the-web。除非您有特定需求,否则请删除这些“获取”行并仅使用资源行。
  • 如果资源可以做得更好,为什么还要添加这些路由?
  • 我相信这取决于你如何调用生成器。如果你使用scaffold_resource,它会创建'resources :posts',而如果你自己生成控制器并定义一些动作,你会得到'get'版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
相关资源
最近更新 更多