Создавать представления Ruby on Rails (только) после того, как контроллеры и модели уже созданы
Я получил проект, который имеет контроллеры (только минимальный код) и модели, но представления отсутствуют. Есть ли способ создать вид только с помощью скаффолда или другого инструмента?
6 ответов
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
- Не забудьте параметр --skip, он не будет создавать существующие файлы (в данном случае контроллер и модель, а также несколько других файлов)
- Убедитесь, что список [field[:type][:index]] обновлен
- Наконец, вы должны обновить свое разрешение в контроллере your_model.
Надеюсь, это поможет вам.
"Еще один инструмент"...
Как насчет возможности сделать "script/generate view_for model_name
"?:)
Для этого есть жемчужина - View Mapper. Он имеет версии Ruby on Rails 2 и 3.
Один маленький совет, чтобы добавить "--no-test-framework
"если используется Rspec и вы не хотите создавать тестовые файлы для каждого представления в spec/views
Для создания представлений после того, как контроллер и модели уже созданы, вы можете использовать командную строку. Вы переключаетесь на папку, в которой вы хотите создать новый вид. Например:
$ cd name_app/app/views/controller_name
$ touch name_file
Чтобы вернуться к одному каталогу, используйте:
$ cd ..