Rails 3:如何在视图中显示多对多连接?

时间:2012-07-05 11:27:11

标签: ruby-on-rails ruby-on-rails-3 join model views

我试图在我看来为每次“旅行”显示所有“腿”。

理想情况下,它们看起来像这样:

-Trip1.name
  - Leg1.name
  - Leg2.name
  - Leg3.name
-Trip2.name
  - Leg4.name
  - Leg5.name
  - Leg6.name 

这些模型是多对多的。我有三张桌腿,Trips和Legs_trips。模型看起来像这样:

Trip.rb

class Trip < ActiveRecord::Base
 has_and_belongs_to_many :legs
 accepts_nested_attributes_for :legs, :reject_if => :all_blank
end

Leg.rb

class Leg < ActiveRecord::Base
 has_and_belongs_to_many :trips
 validates_uniqueness_of :name
 accepts_nested_attributes_for :trips
end

目前控制器中只有这个:

def index
@trips = Trip.all
@legs = Leg.all

 respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @trips }
 end
end

如何构建我的视图的任何建议都会很棒!我已经玩了好几年但似乎无法到达任何地方或在网上找到任何东西。

提前致谢!

詹姆斯

2 个答案:

答案 0 :(得分:3)

 <% @trips.each do |trip| %>
   <ul>
     <li>
       <%= trip.name %>
         <% trip.legs.each do |leg| %>
            <li>
              <%= leg.name %>
            </li>
         <% end %>
     </li>
   </ul>
 <% end %>    

答案 1 :(得分:2)

在您的视图中应用它们:

<ul>
<% @trips.each do |trip| %>
  <li>
  <%= tri.name %>

  <ul>
  <% @trips.legs.each do |leg_in_trip| %>
    <li>
    <%= leg_in_trip.name %>
    </li>
  <% end %>
  </ul>
  </li>
<% end %>
</ul>