大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Rails嵌套对象表单* _attributes,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的型号代码是:
class Person < Party has_one :name,:class_name => "PersonName" accepts_nested_attributes_for :name,:allow_destroy => true end class PersonName < ActiveRecord::Base belongs_to :person end
我的视图代码看起来像这样(我正在使用HAML):
%h3 New customer = error_messages_for :person,:person_name,:name,:country - form_for :person,:url => collection_url,:html => {:class => 'MainForm'} do |person_form| - @person.build_name unless @person.name - person_form.fields_for :name do |name_form| = name_form.label :given_name,"First Name:" = name_form.text_field :given_name = name_form.label :family_name,"last name:" = name_form.text_field :family_name = hidden_field_tag :inviter_id,params[:inviter_id] = hidden_field_tag :inviter_code,params[:inviter_code] %p= submit_tag "Create" = link_to 'BACk',collection_url
而不是参数:
{"person"=>{"name_attributes"=>{"given_name"=>"Fred","family_name"=>"Flintstone"}},...}
我明白了:
{"person"=>{"name"=>{"given_name"=>"Fred",...}
结果,我得到了一个TypeMismatch异常.我遵循了Ryan Daigle的文档.我也遵循了this blog和complex-forms-example的建议.
使用Firebug,我浏览了我的表单,并将输入标记的name属性从name调整为name_attributes.这产生了带有name_attributes的参数,并且创建工作正常.
我陷入困境,因为我无法弄清楚为什么我的表单没有生成名称的* _attributes形式.
我尝试的另一件事是我在我的环境中使用COR_90_11845@plex_form_example.我已经浏览了控制器,模型和视图的每一寸,并将其与我的代码进行了比较.我找不到有什么不同.我知道这是小事,并希望得到任何帮助!
谢谢!
def new @person = Person.new end <% form_for @person do |f| %> <% f.fields_for :name_attributes do |p| %> ... <% end %> <% end %>
邮政后卫被送往正确的地方
def new @person = Person.new @person.name = PersonName.new # << this allows fields_for :relation vs :relation_attributes end <% form_for @person do |f| %> <% f.fields_for :name do |p| %> ... <% end %> <% end %>
#create中不需要@ person.name
以上是大佬教程为你收集整理的ruby-on-rails – Rails嵌套对象表单* _attributes全部内容,希望文章能够帮你解决ruby-on-rails – Rails嵌套对象表单* _attributes所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。