46

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

4

6 回答 6

84
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
于 2011-11-13T21:32:56.933 回答
27

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

rails g erb:scaffold User

erb是使用的模板引擎,所以你也可以使用haml:scaffold.

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

rails g erb:scaffold User firstname lastname reputation

有关rails g --help跳过、强制覆盖和试运行等选项,或generate scaffold --help有关生成脚手架的特定信息,请参阅 。

于 2015-10-06T00:03:24.803 回答
2

“另一个工具”...

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

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

于 2011-11-13T21:38:40.370 回答
2

我刚遇到和你一样的问题。我做的。更多细节如下:
- 首先我将views/your_model 文件夹重命名为views/your_model_bak。为了在以后失败时恢复
- 然后,执行命令

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

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

希望它可以帮助你。

于 2015-05-24T04:06:36.783 回答
1

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

于 2013-05-28T16:51:18.673 回答
-2

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

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

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

$ cd ..
于 2015-08-07T17:59:16.400 回答