2016-06-08 16 views
-1

Ich versuche, eine Restaurantliste zu machen. Ich verknüpfte zwei Tabellen und dann diesen Code schreiben.Warum kann keine Restaurantliste angezeigt werden?

class Restaurant < ActiveRecord::Base 
     has_many :restaurant_translations 
end 

class RestaurantTranslation < ActiveRecord::Base 
     self.table_name = 'restaurant_translations' 
end 

restaurant_controller.rb

class RestaurantController < ApplicationController 
     def list 
       @restaurants = Restaurant.all 
logger.debug @restaurants 
     end 
end 

list.html.slim Tisch Thead tr th Typ th Namen th URL th Genre th Adr

tbody 
    - @restaurants.each do |restaurant| 
     tr 
     td = restaurant.restaurant_type 
     td = restaurant.restaurant_translations.restaurantname 
     td = link_to 'here', restaurant.url 
     td = restaurant.genre 
     td = restaurant.restaurant_translations.address 

Aber die Ergebnisse sind unterschätzt. "nicht definierte Methode` restaurantname‘für #"

enter image description here

Wie kann ich tun, um dieses Problem? Danke im Voraus.

+1

Restaurantname Feld in welcher Tabelle restaurant_translations oder Restaurant – Sunny

+0

Restaurantname gehört zu restaurant_translations. –

Antwort

2

Ihre restauration haben mehrere 'restaurant_translations'.

Beispiel, für die erste können Sie schreiben td = restaurant.restaurant_translations.first.try(:restaurantname)

+0

Vielen Dank! Es funktioniert: D –

1

td = restaurant.restaurant_translations.restaurantname 

mit

td = restaurant.restaurant_translations.first.restaurantname 

diese Ihnen helfen

ersetzen
+0

Danke! Es war hilfreich. –

+0

Wenn es hilfreich ist, bitte upvote die Antwort und akzeptieren Sie es: -) –

-1

weil Restaurent has_many: restaurant_translations so müssen Sie Schleife durch

restaurant.restaurant_translations.each do|res_trans| 
your code here 
end 
+0

Es funktioniert nicht. Vielleicht ist es notwendig, eine innere Schleife zu machen? –

+0

Wenn Sie alle restaurent_translations Schleife zeigen möchten ist –

+0

zeigen Sie mir Ihren Code das ist richtig –