Reputation: 2048
I've obtained a project that have controllers (minimal code only) and models, but the views are missing. Is there a way to generate the views only using scaffold or another tool?
Upvotes: 50
Views: 28565
Reputation: 9251
This is what the scaffold generator calls internally:
rails g erb:scaffold User
erb
is the templating engine used, so you can also use haml:scaffold
.
You must explicitly specify the fields you would like the scaffolding to use--rails does not automatically deduce them from the created model. For example:
rails g erb:scaffold User firstname lastname reputation
See rails g --help
for options like skipping, forcing overwriting, and dry runs or generate scaffold --help
for information specific to generating scaffolding.
Upvotes: 31
Reputation: 395
To generate views after controller and models are already created, you may use the command line. You switch to the folder in which you want to create the new view. For example:
$ cd name_app/app/views/controller_name
$ touch name_file
To go back of one directory use:
$ cd ..
Upvotes: -2
Reputation: 96594
"Another tool"...
How about being able to do "script/generate view_for model_name
"? :)
There is a gem for that - View Mapper. It has Ruby on Rails 2 and 3 versions.
Upvotes: 2
Reputation: 3503
I just encounter the same your problem. I did it. More detail is below:
- First I rename views/your_model folder to views/your_model_bak. In order to revert if fail later
- Then, execute command
rails g scaffold YourModel [field[:type][:index]] --skip
-- Finally, you should update your permit in your_model controller.
Hope it can help you.
Upvotes: 2
Reputation: 21
One small tip is to add "--no-test-framework
" if using Rspec and don't want test files generated for each view in spec/views
Upvotes: 1
Reputation: 160291
rails g scaffold User --migration=false --skip
The --skip
means to skip files that already exist. (The opposite is --force
.)
If you don't want helpers, --helpers=false
.
Sample output after deleting my User
views:
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
Upvotes: 85