rails中一个窗体多个模型——fields_for

2020-12-13 01:33

阅读:689

标签:style   blog   class   c   code   java   

借助field_for可以生成表单来处理两个或更多模型对象的数据

先看一个官方的例子,一个表单中有person和permission两个模型,其中每个person包含一个permission

soscw.com,搜素材
  
   First name:   
   Last name:   
   
     
     Admin :   
     
   
soscw.com,搜素材

当一个person包含多个permission时,view代码如下

soscw.com,搜素材
  
   First name:   
   Last name:   
   
   for permission in @person.permissions %>
     "permission[]", permission do |permission_fields| %>  
       Admin :   
       
    
  
soscw.com,搜素材

1、其中"permission[]"保证了多个permission对象id不同,都包含在param[]中

2、此时,param[:person]={:first_name => v, :last_name => v, :permission1=>v, :permission2 => v...}

3、person_form.

fields_for "permission[]", permission do |permission_fields| %>时,

param[:person]={:first_name => v, :last_name => v, :persom=>{:permission1=>v, :permission2 => v...}}

 

model代码

# models/.person.rb  
def permission_attributes=(permission_attributes)  
  permission_attributes.each do |attributes|  
    permissions.build(attributes)  
  end  
end  

为了对应view里面的permission[]

 

controller里的create方法

soscw.com,搜素材
# persons_controller.rb  
def new  
  @person= person.new  
  3.times { @person.permissions.build }  
end  
  
def create  
  @person= Person.new(params[:project)  
  if @person.save  
    flash[:notice] = "Successfully created project."  
    redirect_to persons_path  
  else  
    render :action => new  
  end  
end  
soscw.com,搜素材

 

 

rails中一个窗体多个模型——fields_for,搜素材,soscw.com

rails中一个窗体多个模型——fields_for

标签:style   blog   class   c   code   java   

原文地址:http://www.cnblogs.com/zs-note/p/3732783.html


评论


亲,登录后才可以留言!