如何根据语言动态生成 Rails 表单
How to generate Rails form dynamically dependant on languages
我有一个表单,我想根据 Langs table 中的语言显示一些表单元素 x 次,它是具有 has_many 关联的嵌套属性。我正在尝试使用 fields_for
但没有成功。
我在模板中有一个 Lang 对象和这段代码。
<%= fields_for :categories_versions, @langs do |lang| %>
<div class="card mt-4 mb-4">
<div class="card-body">
<div class="container mt-4">
<%= "Category for #{Lang.find(lang.id).lang}" %><br/>
它生成 ActionView 对象,但我想访问 @langs
中的每个 lang
(这只是 Lang.all
.
它只为我生成了一组,但我有 2 种语言,所以我想要的输出是包含 2 组列的形式,两种语言中的每一种都有语言名称。
我做错了什么?
fields_for
提供给您的对象(即您示例中的 |lang|
)是一个表单助手,而不是来自 @lang
集合的对象。因此,要获取当前 lang
的 ID,您需要执行 lang.object.id
。我建议您将 |lang|
更改为 |lang_f|
以避免混淆。此外,如果 @langs
与 :categories_versions
的类型不同,我不确定这是否会正常工作。你可能想要这样的东西:
<% @langs.each do |lang| %>
<%= fields_for :categories_versions do |version_f| %>
<%= "Category for #{lang.name}" %><br/>
<%# You will probably want to associate the category version with the lang. %>
<%# Maybe like this. Depends on how you set it up %>
<%= version_f.hidden_field :lang_id, lang.id %>
...
<% end %>
<% end %>
我这里是做一些假设,所以请根据您的实际属性和模型进行调整。
我有一个表单,我想根据 Langs table 中的语言显示一些表单元素 x 次,它是具有 has_many 关联的嵌套属性。我正在尝试使用 fields_for
但没有成功。
我在模板中有一个 Lang 对象和这段代码。
<%= fields_for :categories_versions, @langs do |lang| %>
<div class="card mt-4 mb-4">
<div class="card-body">
<div class="container mt-4">
<%= "Category for #{Lang.find(lang.id).lang}" %><br/>
它生成 ActionView 对象,但我想访问 @langs
中的每个 lang
(这只是 Lang.all
.
它只为我生成了一组,但我有 2 种语言,所以我想要的输出是包含 2 组列的形式,两种语言中的每一种都有语言名称。
我做错了什么?
fields_for
提供给您的对象(即您示例中的 |lang|
)是一个表单助手,而不是来自 @lang
集合的对象。因此,要获取当前 lang
的 ID,您需要执行 lang.object.id
。我建议您将 |lang|
更改为 |lang_f|
以避免混淆。此外,如果 @langs
与 :categories_versions
的类型不同,我不确定这是否会正常工作。你可能想要这样的东西:
<% @langs.each do |lang| %>
<%= fields_for :categories_versions do |version_f| %>
<%= "Category for #{lang.name}" %><br/>
<%# You will probably want to associate the category version with the lang. %>
<%# Maybe like this. Depends on how you set it up %>
<%= version_f.hidden_field :lang_id, lang.id %>
...
<% end %>
<% end %>
我这里是做一些假设,所以请根据您的实际属性和模型进行调整。