Как вы генерируете форму для существующей модели в Rails? - PullRequest
5 голосов
/ 11 июля 2011

Что такое команда для создания одного файла (_form.html.erb) для существующей модели?

Работа в Rails 3.

Спасибо.

Ответы [ 4 ]

12 голосов
/ 11 июля 2011

Это может звучать глупо, но выслушай меня ... Я сам делал такие вещи несколько раз, когда хотел начать чистить. Ниже приведен скрипт, который будет читать вашу схему и генерировать необходимые команды для ее генерации:

require 'rubygems'
require 'active_support/core_ext'
schema = File.read('db/schema.rb')
schema.scan(/create_table "(\w+)",.*?\n(.*?)\n  end/m).each do |name, ddl|
  puts "rails generate scaffold #{name.classify} " +
    ddl.scan(/t\.(\w+)\s+"(\w+)"/).
    reject {|type,name| %w(created_at updated_at).include? name}.
    map {|type,name| "#{name}:#{type}"}.join(' ')
end

Если вы запустите это, вы получите серию команд. В новом каталоге создайте новое приложение rails, а затем запустите эти команды (достаточно просто скопировать и вставить их). Возьмите нужные файлы. Удалите каталог, когда закончите.

2 голосов
/ 26 июля 2012

Вы можете использовать этот скрипт "reverse scaffold":

https://github.com/ahe/reverse_scaffold

Он сгенерирует необходимый файл html.erbb прямо в папке app / views.

Это довольно хорошо объяснено на странице Readme.

И это обновлено для Rails 3.2

2 голосов
/ 11 июля 2011

Я не верю, что есть команда для создания одного файла ... только целого леса.

Есть ли причина, по которой вы хотите создать этот файл? Вы не уверены, каким должно быть содержимое?

1 голос
/ 11 июля 2011

если у вас еще нет контроллера для вашей модели, вы можете сгенерировать контроллер, укажите свои точки входа, и он создаст для вас представления, однако, если вы хотите, чтобы файл _form.html. * Уже был записан. с "уродливым" видом по умолчанию вам, вероятно, придется использовать scaffold для этого.

Вот хорошее руководство по генераторам и другим параметрам командной строки rails .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...