如何在 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 5中为现有模型添加外键

如何在 Rails 4.2 中为多对多关联创建表单

如何在 Rails 中为 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?

如何在 Rails 4 中为多对多关联制作带有子表单的表单?

如何在 CodeIgniter 中为 is_unique 表单验证启用查询生成器?

如何在 Rails 3 中为社交网络应用程序实现友谊模型?