【问题标题】:How to add build inside nested form如何在嵌套表单中添加构建
【发布时间】:2015-09-02 08:02:58
【问题描述】:

我不知道怎么问这个。我如何以嵌套形式做到这一点。当我点击新建。我想从 customer_template_detail 填充我的 customer_answer_detail 的某些字段。我在嵌套表单中有 for 循环,但 @customer_answer.customer_answer_details.build 没有在里面工作。

代码:

<%= simple_form_for @customer_answer do |f| %>
    <%= f.simple_fields_for :customer_answer_details, :wrapper => false do |p| %>
        <% @customer_template.customer_template_details.each do |ctd| %>

            <div class="form-group">
                <%= p.input :name, :as => :hidden, :input_html => { :value => ctd.name } %>
                <%= p.input :customer_template_detail_id, :as => :hidden, :input_html => { :value => ctd.id } %>
                <label class="col-sm-2 col-sm-2 control-label"><%= ctd.name %></label>
                <div class="col-sm-10">
                    <%= p.input :answer,
                        :label => false,
                        :input_html => {:class => "form-control"} %>
                </div><!-- /form col-sm-10-->  
            </div><!-- /form group-->

            <% @customer_answer.customer_answer_details.build %>

        <% end %>  
    <% end %>
<% end %>

你知道怎么做吗?

【问题讨论】:

  • 目前还不清楚您要完成什么。您能否从业务需求的角度描述您的问题,而不是显示此代码...因为您显示的代码似乎不寻常(礼貌地说)

标签: ruby-on-rails simple-form nested-forms nested-attributes simple-form-for


【解决方案1】:

您走在正确的轨道上,只是按错误的顺序进行。

现在,您在构建任何 @customer_answer.customer_answer_details 之前渲染表单。

@customer_answer.customer_answer_details.build 转换为new 控制器操作(如果create 有可能失败并呈现new,则将create)。

【讨论】:

  • 我正在考虑在控制器中执行此操作。例如在新的。我只会添加@customer_answer.customer_answer_details.build,但在那之后,我可以在build@customer_answer.customer_answer_details.name = "sample text" 之后填充这些详细信息吗?
  • 我明白了。谢谢。我所做的是将for loop 放入新的操作中,并将@customer_answer.customer_answer_details.build(:name =&gt; "test") 放入循环中。
  • @do_Ob:for 循环有什么用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多