枚举嵌套表单字段

时间:2012-10-02 07:59:48

标签: ruby-on-rails ruby ruby-on-rails-3 nested-attributes

好的,我很难找到解释问题的词语。我希望你能理解并帮助我,因为坦率地说,我疯了。

假设我有四个模型:UserTeamReportUserReport。我有这个:

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个。对于每个人,UserReport都要添加到Report。在new.html.haml中,我会写这个:

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

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

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

1 个答案:

答案 0 :(得分: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