【发布时间】:2011-12-28 05:30:24
【问题描述】:
我已经获得了一个具有控制器(仅最少代码)和模型的项目,但是缺少视图。有没有办法只使用脚手架或其他工具生成视图?
【问题讨论】:
标签: ruby-on-rails views models scaffold
我已经获得了一个具有控制器(仅最少代码)和模型的项目,但是缺少视图。有没有办法只使用脚手架或其他工具生成视图?
【问题讨论】:
标签: ruby-on-rails views models scaffold
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
【讨论】:
这是脚手架生成器内部调用的内容:
rails g erb:scaffold User
erb是使用的模板引擎,所以你也可以使用haml:scaffold。
您必须明确指定您希望脚手架使用的字段——rails 不会自动从创建的模型中推导出它们。例如:
rails g erb:scaffold User firstname lastname reputation
请参阅rails g --help 了解跳过、强制覆盖和试运行等选项,或参阅generate scaffold --help 了解特定于生成脚手架的信息。
【讨论】:
我刚遇到和你一样的问题。我做到了。更多细节如下:
- 首先我将views/your_model 文件夹重命名为views/your_model_bak。为了在以后失败时恢复
- 然后,执行命令
rails g scaffold YourModel [field[:type][:index]] --skip
-- 最后,您应该在 your_model 控制器中更新您的许可。
希望对你有帮助。
【讨论】:
“另一个工具”...
能够做到“script/generate view_for model_name”怎么样? :)
有一个宝石 - View Mapper。它有 Ruby on Rails 2 和 3 版本。
【讨论】:
如果使用 Rspec 并且不希望为 spec/views 中的每个视图生成测试文件,一个小技巧是添加“--no-test-framework”
【讨论】:
要在创建控制器和模型后生成视图,您可以使用命令行。您切换到要在其中创建新视图的文件夹。例如:
$ cd name_app/app/views/controller_name
$ touch name_file
要返回一个目录,请使用:
$ cd ..
【讨论】: