我正在尝试使用Rails 4构建一个应用程序,并且我在使用外键,表单和实体名称时遇到了这个小问题。以下是一些细节:
rails g scaffold user_type name:string
rails g scaffold user name:string pass:string user_type:references
正如您所看到的,user_type
和user
之间存在1:n的简单关系。它在这种情况下产生了正确的脚手架。这是生成的表单的图像,
但是我想要的是生成器的结果是下一个形式,
所以我想要rails g scaffold
的第一个改变就是生成至少与选择输入的e 1:n关系。此外,我正在寻找一个涉及带有label
或其他东西的模型的解决方案。我需要一个scaffold command
来最终生成它。
Witch表示实体user_type
的{{1}}属性具有“演示标签”。
我知道我可以从头开始创建一个生成器,但我相信我在命令行中缺少一些选项,因为实际上这个更改很小。
并且可以提出一个解决方案,包括在每个CRUD中插入正确的代码,但我打算将其用于150表数据库。有什么帮助吗?
答案 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中阅读。