Ruby on rails Rails嵌套表单编辑
我试图弄清楚整个嵌套表单的事情,但在编辑表单时遇到了一些问题 我不会用“典型的方式”用一个新的和创建的动作来做这件事,因为我实际上不会保存任何东西。我只是用这个表单来生成一些测试 这是我的 model.rbRuby on rails Rails嵌套表单编辑,ruby-on-rails,ruby,nested-attributes,Ruby On Rails,Ruby,Nested Attributes,我试图弄清楚整个嵌套表单的事情,但在编辑表单时遇到了一些问题 我不会用“典型的方式”用一个新的和创建的动作来做这件事,因为我实际上不会保存任何东西。我只是用这个表单来生成一些测试 这是我的 model.rb class Model < ActiveRecord::Base has_many :columns has_many :associations accepts_nested_attributes_for :associations, :reject_if => l
class Model < ActiveRecord::Base
has_many :columns
has_many :associations
accepts_nested_attributes_for :associations, :reject_if => lambda { |a| a[:type].blank? }
accepts_nested_attributes_for :columns, :reject_if => lambda { |a| a[:name].blank? }
attr_accessible :name, :associations_attributes, :columns_attributes
end
窗体视图
<%= nested_form_for(@model, :url => '/model', :html => {:style => 'width:100%;'}) do |f| %>
<%= flash_helper() %>
<h3>Model Name</h3>
<%= f.text_field :name %>
<h3>Add Table Columns</h3>
<div id="columns">
<% f.fields_for :columns do |builder| %>
<div class="float_left column">
<%= builder.label :name %>
<br>
<%= builder.text_field :name, :size => 20 %>
</div>
<div class="float_left column">
<%= builder.label :mass_assign %>
<br>
<%= builder.check_box :mass_assign %>
</div>
<div class="float_left column">
<%= builder.label :required %>
<br>
<%= builder.check_box :required %>
</div>
<div class="float_left column">
<%= builder.label :unique %>
<br>
<%= builder.check_box :unique %>
</div>
<div class="float_left column">
<%= builder.label :db_index %>
<br>
<%= builder.check_box :db_index %>
</div>
<div class="float_left column">
<br>
<%= image_tag "delete-icon24x24.png", :class => "btnDel clickable" %>
</div>
<br class="clear_float">
<% end %>
<%= f.link_to_add image_tag('add-icon.png'), :columns %>
</div>
<br><br>
<input type="submit" name="submit">
<p>
<%= @results %>
</p>
<% end %>
'/model',:html=>{:style=>'width:100%;})do | f |%>
型号名称
添加表列
20 %>
“btnDel可点击”%>
所以问题是,表单when new没有显示“3.times{@model.columns.build}”应该显示的列。另外,当我提交表单时,我需要弄清楚为什么它要删除所有添加的嵌套属性。所以每次我提交表单,它再次呈现表单时,所有属性都消失了。(虽然“模型”属性仍然存在,但“列”属性每次都会重置)
你知道我做错了什么吗
谢谢我甚至不好意思承认这一点,但希望它能帮助其他人做一件事,检查他们是否有同样的问题
<% f.fields_for :columns do |builder| %>
改为:
<%= f.fields_for :columns do |builder| %>
嗯。。真不敢相信我竟然那样做了……我已经有好几天都遇到同样的问题了,但都没能解决问题,结果我也犯了这个令人尴尬的错误。。谢谢你发布这个!
<% f.fields_for :columns do |builder| %>
<%= f.fields_for :columns do |builder| %>