0

以前は、特定の関連付けの複数のインスタンスをレンダリングすることができました (チームに属する複数のロールを生成する [チームには多くのロールがあります - ロールはチームに属します] が、レイアウトにいくつかの変更を加えた後は、それができなくなりました。最後まで読みました。多くの関連スレッドがありますが、私の問題を解決しているようには見えません。

マルチモデル フォームがあり、複数のロールの関連付けを構築して、それらをプロジェクト作成ビューで複数回レンダリングしようとしています。私が遭遇する問題は、一度しかレンダリングされないことです。

#projects_controller.rb
def new
@user = current_user
@project = Project.new
@team = Team.new
@team = @project.build_team
#Default - New Project generates two roles through a team
2.times{@team.roles.new
        role = @team.roles.build}  
 end

#Models

  class Project < ActiveRecord::Base

    has_one :team, dependent: :destroy
    has_many :roles, :through => :team
     accepts_nested_attributes_for :team, :allow_destroy => :true
   end



 class Team < ActiveRecord::Base
      attr_accessible :name, :roles_attributes
      validates :project, presence: true
      belongs_to :project
      has_many :roles, dependent: :destroy

      accepts_nested_attributes_for :roles, :allow_destroy => :true
 end

class Role < ActiveRecord::Base
 belongs_to :team
end

#Views
#new.html.erb
 <%= form_for :project do |f| %>
      <%= render 'fields', :project_form => f %>
      <%= content_tag(:button, content_tag(:span, "Create Project"), {:class => "btn- cma-2 bolds", :type=>:submit}) %> 
     <% end %>

#_fields.html.erb 
  <%= project_form.fields_for :roles do |f| %>
        <%= render 'shared/role_fields', :role_form => f %>
   <% end %>

#_role_fields.html.erb
<div class="formAreaWhite clearfix">
  <div class="width350 fleft">
    <p class="blue">Title:</p>
    <div class="formArea"><%= role_form.collection_select(:role_title_id, @roletitles, :id, :title, {:prompt => "Select a Role"}, {:class=>"formSelect", :size => '1'}) %>
    </div>


    <p><span class="blue">Skills:</span>6/6</p>
  </div>

  <div class="width350 fright">
    <p class="blue">Duties:</p>
    <div class="formArea">

      <div class="formArea"><%= role_form.text_area :duty, :class=>"text300" %></div>
    </div>

</div>
4

1 に答える 1

0

問題に気づきました。テンプレートを更新するときに fields_for :team タグを削除しました。これは、チームの値を非表示にして関連付けを存在させたいためです。明らかに、役割の関連付けを構築するには、チーム インスタンスがビューに表示されている必要があります。

このタグがビューに追加されると、ロールのインスタンスが期待どおりに生成されました。

于 2013-02-02T23:05:18.133 に答える