从Postgresql/Hstore中获取"builder"、"parent_builder"和"namespace"字段在Rails中的返回。

4
我建立了一个简单的应用程序,现在我想通过表单进行更新,但是出现了一些奇怪的问题。
我有一个名为“field_items”的列,它是一个hStore。如果我在视图中调用模型的debug...
<%= debug @app.field_items %>

我得到了两个正确的项目。在Rails控制台中,我也没有看到那三个额外的项目。
我有一个form_for,在其中迭代'field_items'。
在我的表单中,它返回了三个额外的字段“builder”,“parent_builder”和“namespace”。
有人有任何想法吗?我注意到如果我在模型中对:field_items上的serialize行进行注释,它就不会返回这三个额外的属性。
这是我的模型。
class App < ActiveRecord::Base
  belongs_to :page
  attr_accessible :content, :title, :layouts, :field_items

  serialize :layouts, ActiveRecord::Coders::Hstore
  serialize :field_items, ActiveRecord::Coders::Hstore  
end

这是我的编辑视图中的表单/代码:

这是我的编辑视图中的表单/代码

<%= form_for [:admin, @app], :html => { :class => "form app_fields_form" } do |f| -%>
    <div id="app_fields_row_container">
        <%= f.fields_for :field_items, @app.field_items do |fi| %>
            <% @app.field_items.try(:each) do |key, value| %>
                <div class='app_fields_row item_row'>
                    <div class="column col1"><%= text_field_tag key, key, :class => "form_text_field dynamic_attr" %></div>
                    <div class="column col2"><%= fi.select key, options_for_select(APP_FIELD_TYPES, value), {}, {:class => "form_select"} %></div>
                    <div class="column col3"><a href="#" class="adm_button h_red small grey app_fields_delete">x</a></div>
                </div>
            <% end %>
        <%- end -%>
    </div>  
<% end -%>

你弄清楚为什么会出现那些属性了吗?我也遇到了同样的问题。 - graphmeter
我已经成功地将其工作,删除了与您的@app.field_items相应的参数。 - graphmeter
@graphmeter,你能把你所做的具体更改作为答案发布一下吗?如果是修复的话,我会接受它。 - Joel Grannas
2个回答

2
我也遇到了同样的问题。在fields_for中删除@app.field_items对我有用。
<%= f.fields_for :field_items do |fi| %>

1

删除以下行,它应该可以正常工作:

<%= f.fields_for :field_items, @app.field_items do |fi| %>

我曾经遇到过完全相同的问题,移除fields_for调用解决了这个问题,因为它不是一个嵌套资源,所以没有必要使用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接