Rails 三层关联的 form_tag 怎么写

zhbinx · 2013年03月15日 · 最后由 simonykq 回复于 2013年04月15日 · 2659 次阅读

一层:

form_tag @company do |f|
    ...
end

两层

form_tag([@company, @company.departments.build]) do |f|
    ...
end

这个…… @department下面假如还有@group@group下面假如还有@employer, 这个 form_tag 应该是什么写法呢? 求答案,顺便求原理 谢谢大家

form_for @company do |f|
  = f.fields_for :departments do |d|
    = d.fields_for :members do |m|

具体看你情况来初始化这些对象。

可以直接在 form_tag 底下写 fields_for.例如 form_tag :company do = fields_for :departments do |d| = d.fields_for :group do |g|

@yakjuly @simonykq 如果我在后台直接Company.create(params[:company]),rails 会怎么处理?

{:company=>{:departments=>{:group=>{...}}}} 这是后台得到的 Hash

不好意思,应该是:

= form_tag "YOUR URL" do
  = fields_for :company do |c|
    = c.fields_for :departments do |d|
      = d.group do |g|
        ...
    end
  end
end

后台得到的 hash 将是 {:company => {:departments => {:group => {}}}}

需要 登录 后方可回复, 如果你还没有账号请 注册新账号