Создавать представления 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 ..
Другие вопросы по тегам