2012-10-02 44 views
0

好吧,我找到解释我的问题的单词很麻烦。我希望你能理解并帮助我,因为坦率地说,我疯了。枚举嵌套的表单域

比方说,我有四种型号:User,Team,ReportUserReport。我有这样的:

class Report < ActiveRecord::Base 
    belongs_to :team 
    has_many :user_reports 
    accepts_nested_attributes_for :user_reports 
end 
class UserReport < ActiveRecort::Base 
    belongs_to :report 
end 

class ReportsController < ApplicationController 
    def new 
    @team = Team.find params[:team_id] 
    @report = Report.new 
    @team.users.each do |user| 
     ur = @report.user_reports.build 
     ur.user_id = user.id 
    end 
    end 
end 

我现在已经是该网站的用户选择Team。当然,团队中有一堆User s。对于他们每个人,UserReport将被添加到Report。在new.html.haml,我会写这个:

=fields_for :user_reports do |b| 
    =b.hidden_field :user_id, user.id 
    =user.name 

并且有问题。我如何获得user.nameuser.id或此表单构建器中的任何东西?我需要在那里输出用户名,否则网站用户将无法知道谁是谁。

我希望你能理解我的问题,我现在有点绝望。

回答

1
class ReportsController < ApplicationController 
    def new 
    @team = Team.find params[:team_id] 
    @report = Report.new 
    @urs = [] 
    @team.users.each do |user| 
     ur = @report.user_reports.build 
     ur.user_id = user.id 
     @urs << ur 
    end 
    end 
end 

在你看来:

= form_for @report do |f| 
    =f.fields_for :user_reports, @urs do |b| 
    =b.hidden_field :user_id 
    =b.object.user.name