生成具有所有RESTful功能的控制器

时间:2010-03-23 22:38:25

标签: ruby-on-rails controller rest rspec

我正在尝试生成一个控制器,其中包含所有RESTful操作。我在link text读过我所需要做的就是使用一个控制器名称来调用生成器,我会得到它。所以,我运行了“script / generate rspec_controller Properties”,我得到了一个空的控制器。

非常感谢任何其他建议。

10 个答案:

答案 0 :(得分:131)

我不知道这样做的自动化方式,但如果你这样做:

script/generate controller your_model_name_in_plural new create update edit destroy index show

将为您创建所有这些

Rails 4的更新

rails g scaffold_controller Property

答案 1 :(得分:97)

在Rails 3中,还有rails generate scaffold_controller ...。更多信息here

答案 2 :(得分:36)

编辑(由于一些评论):原始问题是在2010年 - 因此答案不是针对RAILS 4,而是针对rails 2 !!

尝试使用脚手架。

script/generate scaffold controller Properties

Section of Official docs on Ruby On Rails

如果您在rails scaffolding上进行谷歌搜索,我相信您可以找到更多信息。希望有所帮助。

修改 对于RAILS 4

rails g scaffold_controller Property

答案 3 :(得分:12)

在Rails 4/5中,以下命令对我有用。

rails g scaffold_controller Property --skip-template-engine

它生成了控制器操作,但没有生成视图。

答案 4 :(得分:7)

你正在寻找脚手架。

尝试:

script/generate scaffold Property

这将为您提供控制器,模型,迁移和相关测试。您可以使用选项--skip-migration跳过迁移。如果你不想要其他人,你必须自己删除它们。不要担心覆盖现有文件,除非您使用--force,否则不会发生这种情况。

正如klew在评论中指出的那样,这也为你定义了 body 方法,而不仅仅是名称。将REST控制器作为起点非常有用。

答案 5 :(得分:7)

Rails 5.1

起点:

您创建的模型没有控制器,也没有视图(例如通过:rails generate model category

目的:

将其升级为完整的RESTful资源

命令:

rails generate scaffold_controller category

它存在一个脚手架控制器,七个RESTful动作和相关视图。 (注意:您可以传递模型名称CamelCased或under_scored。)

输出:

varus@septimusSrv16DEV4:~/railsapps/dblirish$ rails generate scaffold_controller category
Running via Spring preloader in process 45681
      create  app/controllers/categories_controller.rb
      invoke  erb
      create    app/views/categories
      create    app/views/categories/index.html.erb
      create    app/views/categories/edit.html.erb
      create    app/views/categories/show.html.erb
      create    app/views/categories/new.html.erb
      create    app/views/categories/_form.html.erb
      invoke  test_unit
      create    test/controllers/categories_controller_test.rb
      invoke  helper
      create    app/helpers/categories_helper.rb
      invoke    test_unit
      invoke  jbuilder
      create    app/views/categories/index.json.jbuilder
      create    app/views/categories/show.json.jbuilder
      create    app/views/categories/_category.json.jbuilder

答案 6 :(得分:5)

在Rails 4中,它是rails g controller apps new create update edit destroy show index

rails generate controller apps new create update edit destroy show index如果你想写出完整的术语:)。

答案 7 :(得分:2)

script / generate rspec_scaffold Property

答案 8 :(得分:0)

除了通过脚手架之外,没有办法(我知道?记录了吗?)来控制控制器。但你可以这样做:

script/generate controller WhateverController new create edit update destroy show

答案 9 :(得分:0)

一种解决方案是创建一个接受一个参数的脚本,即控制器名称,让脚本为您输入整个命令。

  1. 创建一个新文件,比如,railsgcontroller
  2. 使其可执行并将其保存在路径
  3. 像以下一样运行: $ railsgcontroller文章
  4. die () {
        echo "Please supply new rails controller name to generate."
        echo >&2 "$@"
        exit 1
    }
    
    [ "$#" -eq 1 ] || die "1 argument required, $# provided"
    
    rails g controller "$1" new create update edit destroy show index