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