2015-09-14 2 views
0

У меня есть довольно простая проблема, но не могу понять, как ее решить. У меня две модели: Shop и Mall, которые связаны через таблицу соединений, которая называется MallShops. Когда создается новый магазин, у меня есть возможность связать магазин с любыми торговыми центрами, существующими в базе данных, с помощью флажков. Проблема в том, что после того, как я сохранил магазины, я не знаю, как отобразить торговые центры, которые были связаны с этим магазином на странице показа магазинов. Это мой код:Rails - нужна помощь в отображении записей базы данных, связанных с has_many: через страницу «показать»

Модели:

class Mall < ActiveRecord::Base 
    has_many :mall_shops 
    has_many :shops, :through => :mall_shops 
end 

class Shop < ActiveRecord::Base 
    has_many :mall_shops 
    has_many :malls, :through => :mall_shops 
end 

class MallShop < ActiveRecord::Base 
    belongs_to :shop 
    belongs_to :mall 
end 

Регистрация стол: -

create_table "malls_shops", force: :cascade do |t| 
    t.integer "shop_id" 
    t.integer "mall_id" 
end 

магазин формы: -

<%= form_for(@shop) do |f| %> 

<div class="field"> 
    <%= f.label "Which malls does it belong to?" %><br> 
    <% Mall.all.each do |mall| %> 
     <%= check_box_tag "shop[mall_ids][]", mall.id, @shop.malls.include?(mall) %> 
     <%= mall.name %><br> 
    <% end %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

ответ

1

Это так просто, как призыв к ассоциации с данное отношение. Например:

shops_controller.rb

def show 
    @shop = Shop.find(params[:id]) 
end 

show.html.erb

<% @shop.malls.each do |m| %> 
    <%= m.name %><br> 
<% end %> 

Вызов метода malls вернет все связанные торговые центры к этому данному магазину.