0

我在我的testapp项目中使用了多个脚手架。脚手架Rails4空控制器

我创建第一个支架是这样的:

rails g Post title desc:text

它是成功的,创造了所有相关文件和控制器以及。

,但是当我做了另一个支架:

testapp$ rails g scaffold product name:string information:text 'price:decimal{7,2}' stock:integer available:boolean 
     invoke active_record 
     create db/migrate/20140513062549_create_products.rb 
     create app/models/product.rb 
     invoke test_unit 
     create  test/models/product_test.rb 
     create  test/fixtures/products.yml 
     invoke resource_route 
     route resources :products 
     invoke inherited_resources_controller 
     create app/controllers/products_controller.rb 
     invoke erb 
     create  app/views/products 
     create  app/views/products/index.html.erb 
     create  app/views/products/edit.html.erb 
     create  app/views/products/show.html.erb 
     create  app/views/products/new.html.erb 
     create  app/views/products/_form.html.erb 
     invoke test_unit 
     create  test/controllers/products_controller_test.rb 
     invoke helper 
     create  app/helpers/products_helper.rb 
     invoke  test_unit 
     create  test/helpers/products_helper_test.rb 
     invoke jbuilder 
     create  app/views/products/index.json.jbuilder 
     create  app/views/products/show.json.jbuilder 
     invoke assets 
     invoke coffee 
     create  app/assets/javascripts/products.js.coffee 
     invoke scss 
     create  app/assets/stylesheets/products.css.scss 
     invoke scss 
    identical app/assets/stylesheets/scaffolds.css.scss 

但是当我打开控制器app/controllers/products_controller.rb它是空的,为什么这么?

还有一件事我也使用activeadmin,我知道它与它无关。

+1

似乎很奇怪。我使用'Rails 3'.For我创建了一个非空控制器,其中包含所有的'CRUD'方法和''code'。 – Pavan

+1

我刚刚复制完整的命令并执行完毕,它对我有用。 – Pavan

+0

根据您的复制步骤,我无法在标准Rails安装上重现您的问题。你怎么能这么肯定,ActiveAdmin不会干涉?据我所知,Rails 4兼容的ActiveAdmin尚未发布,因此您正在运行beta/pre-release版本。谁知道什么是不正确的。 –

回答

1

我不能重现此一个基本的Rails安装:

$ rails new empty && cd empty 
$ rails g scaffold Post title desc:text 
$ rails g scaffold product name:string information:text 'price:decimal{7,2}' stock:integer available:boolean 

在此之后,app/controllers/products_controller.rb拥有所有我希望它有行:

$ wc -l app/controllers/products_controller.rb 
     74 app/controllers/products_controller.rb 

这就是说,如果我将ActiveAdmin添加到Gemfile中:

$ echo 'gem "activeadmin", github: "gregbell/active_admin"' >> Gemfile && bundle 

并生成脚手架:

$ rails g scaffold product name:string information:text 'price:decimal{7,2}' stock:integer available:boolean 

我的app/controllers/products_controller.rb包含很少的代码。这不是空的,但几乎:

class ProductsController < InheritedResources::Base 
end 

如果这也是你所看到的,你的问题来自于ActiveAdmin使用inherited_resources做一些繁重的事实。并且你已经结束了与InheritedResource控制器。

虽然,控制器应该工作得很好。

+0

我尝试在新的新项目中做这个脚手架,它工作正常,可能是其他事情与它有关。 – PallavSharma

+0

'rails g scaffold产品名称:字符串信息:text'price:decimal {7,2}'stock:integer available:boolean -c = scaffold_controller'虽然我不知道它是如何工作的,但它完美地工作。 – PallavSharma