#ruby-on-rails #ruby-on-rails-3 #resources
#ruby-on-rails #ruby-on-rails-3 #Ресурсы
Вопрос:
Обычный способ создания каркасов не работает, если вы работаете с единственным ресурсом, есть ли какой-нибудь способ получить отдельные контроллеры по умолчанию через строительные леса? Скажем, если у пользователя есть только один пост, есть ли простой способ запустить команду, например:
rails g scaffold post -singular
Ответ №1:
Когда вы посмотрите на параметры каркаса в Rails 3.1.1, вы увидите следующее:
Usage:
rails generate scaffold NAME [field:type field:type] [options]
Options:
...
ActiveRecord options:
...
Rspec options:
[--singleton] # Supply to create a singleton controller
Вывод rails g scaffold Post name:string body:text --singleton
invoke active_record
create db/migrate/20111103072825_create_posts.rb
create app/models/post.rb
invoke rspec
create spec/models/post_spec.rb
route resources :posts
invoke scaffold_controller
create app/controllers/posts_controller.rb
invoke haml
create app/views/posts
create app/views/posts/index.html.haml
create app/views/posts/edit.html.haml
create app/views/posts/show.html.haml
create app/views/posts/new.html.haml
create app/views/posts/_form.html.haml
invoke rspec
create spec/controllers/posts_controller_spec.rb
create spec/views/posts/edit.html.haml_spec.rb
create spec/views/posts/new.html.haml_spec.rb
create spec/views/posts/show.html.haml_spec.rb
invoke helper
create spec/helpers/posts_helper_spec.rb
create spec/routing/posts_routing_spec.rb
invoke rspec
create spec/requests/posts_spec.rb
invoke helper
create app/helpers/posts_helper.rb
invoke rspec
invoke assets
invoke coffee
create app/assets/javascripts/posts.js.coffee
invoke scss
create app/assets/stylesheets/posts.css.scss
invoke scss
identical app/assets/stylesheets/scaffolds.css.scss
Итак, кажется, что каркас генерирует обычные шаблоны представления.
В Rails 3.0 это была опция для всего генератора, а не только для Rspec. Генераторы в Rails 3 см. В Railscast 216. Возможно, вы найдете генератор в Rails 3.0.x, который удовлетворит ваши потребности.
Комментарии:
1. хм, похоже, что в документации, представленной по ссылке, вам нужно будет передать опцию -c, —singleton, чтобы это сработало. Однако, когда я ввел это в командную строку, он запустил обычный тип генератора каркасов.
Ответ №2:
Я согласен с этим, поэтому я создал проблему с Github. Следуйте этому, если это поможет. Однако я нашел единственный способ исправить это — вручную устранить проблему. Это означает изменение имен вручную. Я знаю, что вы не хотите этого делать, но я обнаружил, что иногда это единственный способ.