【发布时间】:2014-08-14 18:30:07
【问题描述】:
控制器: projects_controller.rb
def new
@project = Project.new
@project.repositories.build
end
def edit
@project = Project.find(params[:id])
end
型号: project_sub_type.rb
class ProjectSubType < ActiveRecord::Base
has_many :repositories, :dependent => :destroy
accepts_nested_attributes_for :repositories
end
查看: _form.html.erb
<%= form_for @project, :html => {:class => 'project'} do |f| %>
<%= f.label :name, "Project name" %>
<%= f.text_field :name %>
<%= f.fields_for :repositories do |ff| %>
<%= ff.check_box :repos_name, {} , "svn_software", nil %> Svn Software
<% end %>
<%= f.fields_for :repositories do |ff| %>
<%= ff.check_box :repos_name, {} , "git_software", nil %> Git Software
<% end %>
<%= f.submit "Save"%>
edit.html.erb
<h2>Edit project</h2>
<%= render 'form' %>
问题:在创建过程中会创建这样的复选框
<input type="checkbox" value="svn_software" name="project[repositories_attributes][0][repos_name]" id="project_repositories_attributes_0_repos_name">
<input type="checkbox" value="git_software" name="project[repositories_attributes][1][repos_name]" id="project_repositories_attributes_1_repos_name">
它非常适合我。但在编辑期间,它会额外创建 2 个字段:
<input type="checkbox" value="svn_software" name="project[repositories_attributes][0][repos_name]" id="project_repositories_attributes_0_repos_name">
<input type="checkbox" value="svn_software" name="project[repositories_attributes][1][repos_name]" id="project_repositories_attributes_1_repos_name">
<input type="checkbox" value="git_software" name="project[repositories_attributes][2][repos_name]" id="project_repositories_attributes_2_repos_name">
<input type="checkbox" value="git_software" name="project[repositories_attributes][3][repos_name]" id="project_repositories_attributes_3_repos_name">
并且还创建了一个隐藏字段,如下所示:
<input type="hidden" value="51" name="project[repositories_attributes][0][id]" id="project_repositories_attributes_0_id">
到.. 3
谁能指出我的错误。如果我使用 1 个 fields_for 并循环遍历一个数组,也会存在同样的问题。
谁能帮忙。
提前致谢
【问题讨论】:
-
你能告诉我edit.html.erb吗? : ["0"=> {{:repos_name=>"svn_software" },"1"=>{:repos_name=>"git_software" }}, ] }}
-
@Milind:是的,在创建过程中我得到了类似的参数。检查我更新的答案以进行编辑。
标签: ruby-on-rails ruby-on-rails-3