如何在 Rails 中为现有模型生成表单?
Posted
技术标签:
【中文标题】如何在 Rails 中为现有模型生成表单?【英文标题】:How do you generate the form for an existing model in Rails? 【发布时间】:2011-10-02 10:47:24 【问题描述】:为现有模型生成单个文件 (_form.html.erb) 的命令是什么?
在 Rails 3 中工作。
谢谢。
【问题讨论】:
【参考方案1】:我不相信有生成单个文件的命令...只有整个脚手架。
您是否有理由要生成该文件?您不确定内容应该是什么?
【讨论】:
原因是我添加了一堆字段,想自动生成文件。 啊...最好的办法是自己添加它们。您可以重新生成模型脚手架,但最终还是要输入所有列名和类型。【参考方案2】:如果您还没有模型的控制器,您可以生成控制器,指定您的入口点,它会为您创建视图,但是,如果您希望已经编写了 _form.html.* 文件对于“丑陋”的默认视图,您可能必须使用脚手架来做到这一点。
这是一个很好的guide on generators and other rails command line options。
【讨论】:
【参考方案3】:这听起来可能很愚蠢,但请听我说……当我想开始清理时,我自己已经做过几次这样的事情了。以下是一个脚本,它将读取您的架构并生成必要的生成命令来重现它:
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 应用程序,然后运行这些命令(只需复制和粘贴它们即可)。获取您想要的文件。完成后删除目录。
【讨论】:
这很好,但github.com/frenesim/schema_to_scaffold 更彻底地充实了这一点。【参考方案4】:你可以使用这个“反向脚手架”脚本:
https://github.com/ahe/reverse_scaffold
它将在您的 app/views 文件夹中生成所需的 html.erbb 文件。
Readme 页面上有很好的解释。
而且,它已针对 Rails 3.2 进行了更新
【讨论】:
以上是关于如何在 Rails 中为现有模型生成表单?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Rails 中为 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?
如何在 Rails 4 中为多对多关联制作带有子表单的表单?