Create Ruby on Rails views (only) after controllers and models are already created
Solution 1
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
Solution 2
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.
Solution 3
"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.
Solution 4
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
- Don't forget --skip option, it will not create exist files (controller and model in this case and few other files)
- Make sure list [field[:type][:index]] is up to date
-- Finally, you should update your permit in your_model controller.
Hope it can help you.
Solution 5
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
Related videos on Youtube
Sean
Updated on July 20, 2020Comments
-
Sean almost 4 years
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?
-
skalb over 10 yearsNote: if you want the generated views to have attributes you need to include them after your model e.g User name:string email:string etc.
-
Michael Durrant about 9 yearsyeah that was from 2011, now 4 years old.
-
Kevin Zhao almost 9 yearsWhat does the '--migration=false' do?
-
Dave Newton almost 9 years@KevinZhao ... Doesn't generate migrations.
-
Dave Newton almost 9 years...? Or just create the file in an editor. I don't see how this is particularly helpfile, it's basically saying "create the file by creating the file", and it doesn't create all the associated Rails-ish files, just whichever one you created on the command line.
-
Ole Henrik Skogstrøm over 8 yearsI feel like this is actually the correct answer. All other options will generate whatever is missing. This one only generates the views. Thank you :)
-
CppNoob almost 7 yearsThis does not really help. Rick Smith answer below is correct.
-
Dave Newton almost 7 years@CppNoob Turns out Rails actually changed over the four years between the original answers and the new ones from 2015.