【问题标题】:Auto-generate routes for scaffolded controller in Rails 4?在 Rails 4 中为脚手架控制器自动生成路由?
【发布时间】:2014-12-21 12:27:29
【问题描述】:

我正在尝试为一个已经拥有其数据模型的应用程序提供一个快速而简单的 Ajax UI - 到目前为止,它基本上是通过rails console 进行管理的。无论如何,我想我会首先自动生成您将从rails g scaffold 获得的缺少的控制器逻辑,而不是使用现有控制器的rails g scaffold_controller

它创建了控制器、视图和资产......但它根本没有触及路线!它甚至没有尝试,没有说“警告:routes.rb 已被修改,没有改变”或类似的东西,rails g scaffold_controller 的帮助输出中根本没有提到路由。

那我怎么说“如果我从头开始,请给我你会给我的正常路线!”?

【问题讨论】:

  • 也许你可以看看这个话题:stackoverflow.com/questions/12978447/…
  • 谢谢,@BenjaminBenoudis ......这就是我开始的地方,按照那里接受的答案所说的,只是它不起作用。 :\

标签: ruby-on-rails ruby ruby-on-rails-4 routes scaffolding


【解决方案1】:

虽然这是很久以前在询问 Rails 4,但在 Rails 5 中,rails g scaffold_controller 仍然不会自动生成路由,我用下面的猴子补丁做到了:

require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'

patcher = Module.new do
  extend ActiveSupport::Concern

  included do
    hook_for :resource_route, required: true
  end
end

Rails::Generators::ScaffoldControllerGenerator.send :include, patcher

【讨论】:

    【解决方案2】:

    如果我理解了这个问题:

    请打开 config/routes.rb 文件,并在块 (routes.draw) 中添加以表名(模型的复数形式)作为参数的资源方法。像这样:

    MyApp::Application.routes.draw do
      resources :products
      ... # rest of code
    end
    

    定义产品上的 RESTful 操作的路由。你可以阅读更多here

    您可以在控制台运行:rake routes 以查看您的应用程序中的可用路线。

    【讨论】:

    • 谢谢。我确实想通了,肯定比我预期的要少。猜猜我被困在旧 Rails 2 天了。但我仍然想知道为什么脚手架添加了路由,但脚手架控制器没有..
    • 因为路由是由ResourceGenerator生成的,而ScaffoldGenerator继承自ResourceGenerator,而ScaffoldControllerGenerator继承自NamedBased。更多hereherehere
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2012-09-06
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多