首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails中的嵌套表单

问Rails中的嵌套表单
EN

Stack Overflow用户
提问于 2012-02-22 11:03:45
回答 2查看 832关注 0票数 2

一直在谷歌上搜索,但我找不到任何帮助。我正在尝试将字段动态添加到我一直创建的嵌套表单中。目前的代码是:

控制器

代码语言:javascript
复制
if @jobstream.complex_attributes == []      
        @functional_group.functional_type_stores.each do |ftype|
                if(Type.find(ftype.type_id).simple_or_complex == 'C' || Type.find(ftype.type_id).simple_or_complex == 'c' )
                    @jobstream.complex_attributes.build(:type_id => Type.find(ftype.type_id).id)
                end
        end
end

表单

代码语言:javascript
复制
<%= f.fields_for :complex_attributes do |f_sa| %>
    <tr>
        <div class="field">
            <td><%= @complexType[@counter].display_name %></td>
            <td><%= @complexType[@counter].simple_or_complex %></td>
            <%= f_sa.hidden_field :type_id%>
            <td><%= f_sa.text_field :content, :size => 100 %></td>
        </div>
    </tr>
    <% (@counter += 1) %>
<% end %>

我需要的是一种能够动态地向复杂属性添加另一个文本字段的方法,同时为复杂属性创建一个惟一的id,并保留您希望向其添加更多字段的复杂属性的hidden_field type_id值。

为了更好地解释这一点,请快速参考,请转到这里并点击create -我基本上希望能够有一个复杂属性的列表,在它们旁边有一个按钮,允许您为这个属性添加更多的文本字段。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-22 12:30:30

由于不能向现有模型(比db中的字段更多)添加更多的属性对,因此您可能必须创建另一个由@作业流模型拥有的模型。然后,这个新模型将存储属性,并且必须使用@ This流模型进行调用。

在表单中,您必须远程添加字段,为了避免错误,您需要使用Model.create,而不是Model.new(因为嵌套表单否则会崩溃)。此外,您还需要为每个添加的字段添加新的fields_for标记。

我想那是为了铁轨。

您还可以尝试将这些新属性存储为指定字段中的散列-例如,您可以拥有以下字段

代码语言:javascript
复制
<%= fields_for :complex_attributes, do |f| %>
<%= f.text_field :attr_foo %>
<%= f.text_field :attr_new %>
<%= f.text_field :another_attr_new %>...

然后,在更新表单之后,您可以使用Model.complex_attributes.each_pair do |key, value|检索这些属性--这里的问题是添加更多字段,您可能需要对这些字段进行硬编码,而且必须为每个新字段分配新的键。

但这是可以做到的。我猜:)

票数 0
EN

Stack Overflow用户

发布于 2012-02-22 11:23:34

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9393559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档