【问题标题】:Adding fields to nested forms向嵌套表单添加字段
【发布时间】:2012-07-14 19:25:08
【问题描述】:

所以我有一个名为 City 的模型,它是 has_many :places,它是 accepts_nested_attributes_for :places。每个地方belongs_to :category。当我为城市渲染表单时,我有f.fields_for :places do |place|,我这样做是这样的:

<% f.fields_for :places do |place| %>
  <%= render "place_fields", :f => place
<% end %>

我的 _place_fields.html.erb 包含以下内容:

<div class="place_header"><%= f.object.category.name %></div>
<div><%= f.label :name %>: <%=f.text_field :name %> </div>
<div><%= f.text_area :description %> </div>

但是当我尝试添加新地点时,问题就出现了。首先,我想调出一个简单的选择表单来为新地点选择一个类别,然后根据 category_id 呈现相同的部分。 我在同一个动作中这样做:

def add_place
  if params[:category_id]
    @place = Place.new(:category_id => params[:category_id])
    respond_to do |format|
      format.html { return nil }
      format.js {
        #here comes the render
      }
    end
  else
    render_message :header => "Choose category", :partial => "category_select", :over => 10
  end
end

但是,如果我尝试执行 $("#places_tab").append("&lt;%= escape_javascript(render :partial =&gt; "place_fields", :f =&gt; @place %&gt;");,则会出现错误,这是意料之中的。

再一次:我需要为那个新地方渲染字段,只是不知道该怎么做。

更新

收到了一些关于将原始 City Formbuilder 传递给操作并直接从该构建器渲染该 Place 的建议,但不知道如何执行此操作。

【问题讨论】:

  • 如果符合预期,您的问题是什么?错误信息是什么?另外,我在您的代码中没有看到带有 #places_tab 的 div。
  • 错误是地方没有方法标签。问题是如何解决该错误,如何从 Place 记录中创建 Formbuilder。 #places_tab 是 fields_for 的包装器。

标签: ruby-on-rails-3 formbuilder


【解决方案1】:

问题在于您将 Place 模型 (@place) 的实例作为表单构建器而不是表单构建器本身传递。

【讨论】:

  • $("#places_tab").append(" "place_fields", :f => @place %>"); 这个在哪里? 它可以像删除@一样简单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 2013-08-10
  • 1970-01-01
相关资源
最近更新 更多