创建多个嵌套对象

时间:2011-05-12 10:37:47

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

我现在一直在努力解决这个问题。

为简单起见,假设我有一个用户问的Lead The Jungle应用程序 适用于某些目的地的建议。在回答这个,其他,经验丰富 用户建议一个引导他们直接指导他们的人。

假设我有以下型号。

class User < ActiveRecord::Base
  has_many :destinations
  validates :username, :email
  #..
end

class Recommendation < ActiveRecord::Base
  belongs_to :user
  belongs_to :destination
  belongs_to :guide
  #..
end


class Guide < ActiveRecord::Base
  has_many :recommendations
  validates :name, :nickname, :phone
  #..
end

class Destination < ActiveRecord::Base
  has_many :recommendations
  has_many :users
  #..
end

在我的页面上,在丛林地图旁边,我希望有一个小部件 我可以向相关的指导人员提出最多三条建议到一个目的地。我也想  向导游提供联系方式。

问题是,我在某些分组关系下没有这三个推荐的指南(例如图库下的照片)。 所以我不能简单地使用嵌套属性。

有没有办法创建多个嵌套对象,而没有包含它们的单个父对象?

我尝试了以下(在许多其他方法中),但指南参数不在他们的推荐下,我看不出哪个指南与哪个推荐相关。

<%= form_tag('recommendations') do -%>
   <ul id="selected-guides">
     <% @recommendations.each_with_index do |recommendation, index| %>
       <%= render 'recommendation_fields', :recommendation => recommendation} %>
     <% end %>
   </ul>
   <%= submit_tag %>
<% end %>

_recommendation_fields.erb

<%= fields_for recommendation do |Recommendation_fields| %>
  <div>
    <%= fields_for recommendation.guide do |guide_fields| %>
      <%= guide_fields.text_field :name %>
      <%= guide_fields.text_field :nickname %>
      <%= guide_fields.text_field :phone %>
    <% end %>
  </div>
<% end %>

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你可以尝试使用rails 3.1并且通过assosiaction进行操作。 看看ryan bates的新截屏视频,它可能对你有帮助!

http://railscasts.com/episodes/265-rails-3-1-overview

项目的ryans示例(models / project.rb)

has_many :tasks
has_many :assigments, :through => :tasks
has_many :users, :through => :assignments

在你的情况下,你也可以像这样访问,我想