我有一下面一段 form
<figure class="edit_element edit_header">
<figcaption>Website Header</figcaption>
<a class="close" href="#"></a>
<%= form_for @node, :remote => true do |node_form|%>
<%= node_form.fields_for :header do |f| %>
<div class="content">
<ul class="form_list">
<li>
<%= f.label :headerFormTitle,"Website name" %>
<%= f.text_field :headerFormTitle, class: "input_text" %>
</li>
<li>
<%= f.label :headerFormDescription,"Website slogan" %>
<%= f.text_area :headerFormDescription %>
</li>
</ul>
<div class="legend clearfix"><i class="left_line"></i>Or<i class="right_line"></i></div>
<ul class="image_list">
<li class="clearfix">
<label>header image</label>
<div class="fl">
<div class="samll_image"><%= image_tag "material/sample_img1.jpg"%></div>
<!-- <span class="button add_button">choose image</span> -->
</div>
</li>
</ul>
</div>
<div class="save">
<%= f.submit class: "button save_button", value: "Done"%>
</div>
<% end %>
<% end %>
</figure>
只有 node 这个模型 而且里面所有的属性都不存在 都是我构建的虚拟属性
主要是关于验证问题 假如我没有<%= node_form.fields_for :header do |f| %> 这个来做多级嵌套 只有<%= form_for @node, :remote => true do |node_form|%>那么我的验证可以这样写
class Node < ActiveRecord::Base
attr_accessor :header,:headerFormTitle,:headerFormDescription :direction, :position
validates :headerFormTitle, length: { minimum: 2 }
validates :headerFormDescription, length: { minimum: 2 }
end
这样验证可以生效 因为 form 构建出来 类似
node[headerFormTitle]
而现在 我利用的多层嵌套后构建出来的表单 类似
node[header][headerFormTitle]
这样验证就失效了。我该如何来在 model 去验证这几个表单
后来 我又创建了一个 header 模型 还使用了类似 accepts_nested_attributes_for 来创建关联 但它似乎提示我 缺少一个叫 header 的表