Я слишком долго боролся с этим.
Для простоты предположим, что у меня есть приложение 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 %>
Спасибо за помощь!