在创建控制器和模型之后,仅创建Ruby on Rails视图

时间:2011-11-13 21:26:26

标签: ruby-on-rails views models scaffold

我已经获得了一个具有控制器(仅限最少代码)和模型的项目,但缺少视图。有没有办法只使用脚手架或其他工具生成视图?

6 个答案:

答案 0 :(得分:79)

rails g scaffold User --migration=false --skip

--skip表示跳过已存在的文件。 (相反的是--force。)

如果您不想要帮助者--helpers=false

删除User次观看后的示例输出:

      invoke  active_record
   identical    app/models/user.rb
      invoke    test_unit
   identical      test/unit/user_test.rb
        skip      test/fixtures/users.yml
       route  resources :users
      invoke  scaffold_controller
   identical    app/controllers/users_controller.rb
      invoke    erb
       exist      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      invoke    test_unit
   identical      test/functional/users_controller_test.rb
      invoke    helper
   identical      app/helpers/users_helper.rb
      invoke      test_unit
   identical        test/unit/helpers/users_helper_test.rb
      invoke  assets
      invoke    coffee
   identical      app/assets/javascripts/users.js.coffee
      invoke    scss
   identical      app/assets/stylesheets/users.css.scss
      invoke  scss
   identical    app/assets/stylesheets/scaffolds.css.scss

答案 1 :(得分:15)

这是脚手架生成器内部调用的内容:

rails g erb:scaffold User

erb是使用的模板引擎,因此您也可以使用haml:scaffold

您必须明确指定您希望脚手架使用的字段 - rails 会自动从创建的模型中推断出它们。例如:

rails g erb:scaffold User firstname lastname reputation

有关跳过,强制覆盖和干运行的选项,请参阅rails g --help;有关生成脚手架的信息,请参阅generate scaffold --help

答案 2 :(得分:2)

“另一种工具”......

能够做“script/generate view_for model_name”怎么样? :)

有一个宝石 - View Mapper。它有Ruby on Rails 2和3版本。

答案 3 :(得分:2)

我只是遇到了同样的问题。我做的。更多细节如下:
  - 首先,我将views / your_model文件夹重命名为views / your_model_bak。如果以后失败,则为了恢复   - 然后,执行命令

rails g scaffold YourModel [field[:type][:index]] --skip
  • 别忘了--skip选项,它不会创建存在的文件(在这种情况下控制器和模型以及其他一些文件)
  • 确保列表[字段[:类型] [:索引]]是最新的

- 最后,您应该在your_model控制器中更新许可证。

希望它可以帮到你。

答案 4 :(得分:1)

如果使用 Rspec 并且不希望为spec / views中的每个视图生成测试文件,则需要添加“--no-test-framework

答案 5 :(得分:-1)

要在创建控制器和模型后生成视图,可以使用命令行。切换到要在其中创建新视图的文件夹。例如:

$ cd name_app/app/views/controller_name
$ touch name_file

要返回一个目录,请使用:

$ cd ..