rails form nested嵌套的一个小知识点


a model project 

class Project < ActiveRecord::Base
  validates :project_name, presence: true,uniqueness: true  
  validates :plan_time, presence: true
  has_many :tasks, dependent: :destroy
  accepts_nested_attributes_for :tasks, allow_destroy: true
end

and a model task:

class Task < ActiveRecord::Base
  belongs_to :user
  belongs_to :project
  validates :user_id, presence: true
  validates :project_id, presence:true
end

but when I made a form_for project: 

<%= form_for(@project, do |f| %>
  <%= f.fields_for :tasks do |ff|%>
    <%= ff.label :key_name, ff.object.key_name %>
  <%end%>
<%end%>
上面的代码有两个小知识点,
一个是 

accepts_nested_attributes_for, 设置嵌套表单。
在新建 project的controller的new方法里面
需要增加   @project.tasks.build 

另外一个知识点是,
一般 form_for 方法里面
f.label 对应的value是定义在locales的多语言配置文件里面,
这里可以显示 某个字段的value, 比如:
label显示
<%= f.label, :height, f.object.name %>

f.object 代表的是当前的对象。



阅读量: 341
发布于:
修改于: