0
我有一個多態模型,並希望有一個嵌套的表單使用此模型。我沒有得到任何錯誤,但表單不顯示嵌套字段。這裏是我的模型和精簡形式:Rails多態嵌套屬性
多態模型中使用的多態型
class Page < ActiveRecord::Base
has_one :seo_mappings, :as => :mappingtable, :dependent => :destroy
accepts_nested_attributes_for :seo_mappings
attr_accessible :content, :h1, :meta_description, :title, :seo_mappings_attributes
.........
end
class SeoMapping < ActiveRecord::Base
belongs_to :mappingtable, :polymorphic => true
attr_accessible :seo_url
validates :seo_url, :presence => true, :uniqueness => true
end
頁面模型現在精簡形式
<%= form_for(@page) do |f| %>
<% if @page.errors.any? %>
.......
<% end %>
<div class="field">
<%= f.fields_for :seo_mappings do |builder| %>
<%= builder.label :seo_url %><br />
<%= builder.text_field :seo_url %>
<% end %>
</div>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
.........
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我不能明白爲什麼它不顯示fields_for元素。如果我爲該字段註釋掉accep_nested_attributes_,然後顯示。你能看到我要去哪裏嗎?
TY
可能是一個愚蠢的問題,但這是你正在談論的創建或編輯操作?如果是創建,你是否在控制器中調用@ page.build_seo_mapping或其他東西?如果你使用has_one,也可能是不相關的,通常你想使用單數名詞,所以'has_one:seo_mapping'而不是'mappings'。 –
@彼得 - 我認爲你在錢上。 @李,你需要「建立」這種關聯或什麼都不會出現。絕對要注意你的單數/複數命名。 Rails約定將是'has_many:seo_mappings'或'has_one:seo_mapping'。 –
是的,這是我需要創建的版本。可以將我的頭靠在牆上!謝謝彼得 – Lee