Ruby on rails 未保存嵌套属性
我有一个创建/编辑事件的表单。有一个客户端下拉列表,根据所选客户端呈现一些自定义问题和答案 我在Windows上运行带有Ruby 1.8.6和Mongrel的Rails 2.3.9。 以下是相关代码: 事件形式Ruby on rails 未保存嵌套属性,ruby-on-rails,forms,Ruby On Rails,Forms,我有一个创建/编辑事件的表单。有一个客户端下拉列表,根据所选客户端呈现一些自定义问题和答案 我在Windows上运行带有Ruby 1.8.6和Mongrel的Rails 2.3.9。 以下是相关代码: 事件形式 - form_for @event do |f| .... = f.collection_select(:client_id, Client.all, :id, :name) #custom_client_fields = render 'clien
- form_for @event do |f|
....
= f.collection_select(:client_id, Client.all, :id, :name)
#custom_client_fields
= render 'client_fields' if @client
= observe_field :event_client_id, :url => {:action => 'client_fields'},
:with => "'client_id=' + encodeURIComponent(value)"
....
_client_fields.html.haml
- fields_for "event[client_attributes]", @client do |client|
- client.fields_for :questions do |question|
%label.question= question.object.content
- question.fields_for :answers, Answer.new do |answer|
= answer.text_field:content, :maxlength => 150, :size => 40
事件控制器
def client_fields
if params[:client_id].blank?
render_no_client_fields #self explanatory
else
respond_to do |format|
format.js {
render :update do |page|
page[:custom_client_fields].replace_html :partial => 'client_fields', :layout => false
end
}
end
end
end
参数散列
Parameters: {
"event"=>{
"id"=>"2",
"client_attributes"=>{
"questions_attributes"=>{
"0"=>{
"id"=>"4",
"answers_attributes"=>{
"0"=>{
"content"=>"fjhkghjkk"
}
}
}
}
}
}
}
基本上,表单通过了验证和除嵌套属性以外的所有内容。数据库表中没有插入任何内容
查看参数hash my client_attributes没有id。。。嗯…在client_部分字段中,我必须添加以下代码来设置client_属性\u id:
<input id="event_client_attributes_id" name="event[client_attributes][id]" type="hidden" value="#{@client.id}">
self注意:当您不使用Rails的魔法表单助手时,您还必须构建表单的其余部分。您使用的是哪一版本的Rails?