Rails脚手架引用选择输入和实体标签与生成器

时间:2014-01-31 17:18:29

标签: forms ruby-on-rails-4 generator crud scaffolding

我正在尝试使用Rails 4构建一个应用程序,并且我在使用外键,表单和实体名称时遇到了这个小问题。以下是一些细节:

rails g scaffold user_type name:string
rails g scaffold user name:string pass:string user_type:references

正如您所看到的,user_typeuser之间存在1:n的简单关系。它在这种情况下产生了正确的脚手架。这是生成的表单的图像,

enter image description here

但是我想要的是生成器的结果是下一个形式,

enter image description here

所以我想要rails g scaffold的第一个改变就是生成至少与选择输入的e 1:n关系。此外,我正在寻找一个涉及带有label或其他东西的模型的解决方案。我需要一个scaffold command来最终生成它。

enter image description here

Witch表示实体user_type的{​​{1}}属性具有“演示标签”。

我知道我可以从头开始创建一个生成器,但我相信我在命令行中缺少一些选项,因为实际上这个更改很小。

并且可以提出一个解决方案,包括在每个CRUD中插入正确的代码,但我打算将其用于150表数据库。有什么帮助吗?

1 个答案:

答案 0 :(得分:6)

您可以通过在应用程序根目录的lib/templates/erb/scaffold文件夹中创建备用模板来替换支架生成器使用的模板。

在这种情况下,您需要复制原始_form.html.erb模板并将文本字段替换为collection_select:

  <%- if attribute.reference? -%>
    <%%= f.label :<%= attribute.column_name %> %><br>
-   <%%= f.<%= attribute.field_type %> :<%= attribute.column_name %> %>
+   <%%= f.collection_select :<%= attribute.column_name %>, <%= attribute.name.camelize %>.all, :id, :name, prompt: true  %>
  <%- else -%>

更多细节可以在my post on the subject中阅读。