如何在Rails中为现有模型生成表单?

5

如何为已存在的模型生成单个文件(_form.html.erb)的命令是什么?

在Rails 3中工作。

谢谢。

4个回答

12

这可能听起来很傻,但请听我说… 当我想要一张干净的纸时,我自己也做过类似的事情。以下是一个脚本,它将读取您的模式并生成必要的生成命令以重新生成它:

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应用程序,然后运行这些命令(只需简单地复制和粘贴它们即可)。获取您想要的文件。完成后删除该目录。

1
这很不错,但是 https://github.com/frenesim/schema_to_scaffold 更加全面地完善了它。 - Dan Kohn

2
我不相信有一个命令可以生成单个文件...只能生成整个脚手架。
你想生成那个文件的原因是什么?您是否不确定其内容应该是什么?

原因是我添加了一堆字段并希望自动生成文件。 - B Seven
啊...你最好自己添加它们。你可以重新生成模型脚手架,但最终你还是要输入所有的列名和类型。 - Matt Polito

2
你可以使用这个“反向脚手架”脚本:

https://github.com/ahe/reverse_scaffold

它会在你的app/views文件夹中生成所需的html.erbb文件。
在Readme页面上已经很好地解释了它。
而且,它已经更新为Rails 3.2。

1

如果你还没有针对你的模型的控制器,你可以生成控制器,并指定入口点,然后它会为你创建视图。但是,如果你想要使用“丑陋”的默认视图已经编写好的 _form.html.* 文件,你可能需要使用脚手架来完成。

这里有一个很好的 关于生成器和其他Rails命令行选项的指南


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接