2011-11-03 72 views
8

腳手架的常規方式不起作用,如果你正在使用單一資源,有什麼辦法通過腳手架獲得默認的單數控制器?說,如果一個用戶只有一個職位有一個簡單的是運行像這樣的命令:有沒有辦法在rails中搭建一個單例資源?

rails g scaffold post -singular 

回答

2

當你看到在Rails的3.1.1支架選項,你會看到以下內容:

Usage: 
    rails generate scaffold NAME [field:type field:type] [options] 

Options: 
    ... 

ActiveRecord options: 
    ... 

Rspec options: 
    [--singleton]     # Supply to create a singleton controller 

rails g scaffold Post name:string body:text --singleton輸出是

invoke active_record 
    create db/migrate/20111103072825_create_posts.rb 
    create app/models/post.rb 
    invoke rspec 
    create  spec/models/post_spec.rb 
    route resources :posts 
    invoke scaffold_controller 
    create app/controllers/posts_controller.rb 
    invoke haml 
    create  app/views/posts 
    create  app/views/posts/index.html.haml 
    create  app/views/posts/edit.html.haml 
    create  app/views/posts/show.html.haml 
    create  app/views/posts/new.html.haml 
    create  app/views/posts/_form.html.haml 
    invoke rspec 
    create  spec/controllers/posts_controller_spec.rb 
    create  spec/views/posts/edit.html.haml_spec.rb 
    create  spec/views/posts/new.html.haml_spec.rb 
    create  spec/views/posts/show.html.haml_spec.rb 
    invoke  helper 
    create  spec/helpers/posts_helper_spec.rb 
    create  spec/routing/posts_routing_spec.rb 
    invoke  rspec 
    create  spec/requests/posts_spec.rb 
    invoke helper 
    create  app/helpers/posts_helper.rb 
    invoke  rspec 
    invoke assets 
    invoke coffee 
    create  app/assets/javascripts/posts.js.coffee 
    invoke scss 
    create  app/assets/stylesheets/posts.css.scss 
    invoke scss 
identical app/assets/stylesheets/scaffolds.css.scss 

如此看來,腳手架生成通常的看法模板。

在Rails 3.0中,這是整個生成器的一個選項,不僅是Rspec的一個選項。請參閱Railscast 216 for Generators in Rails 3。也許你會在Rails 3.0.x中找到一個能滿足你需求的生成器。

+0

嗯它看起來像在鏈接提供的文件,你將不得不通過選項-c,--singleton爲了這個工作。但是,當我在命令行中鍵入它時,它會運行常規類型的腳手架生成器。 – tomciopp

0

我同意這一點,所以我創建了Github issue。如果有幫助,按照這個。不過,我發現解決這個問題的唯一方法就是手動修復問題。這意味着用手改變名字。我知道你不想這樣做,但我發現有些時候這是唯一的方法。

+0

通過mliebelt查看上面的解決方案,它的效果很好 – Brandt

相關問題