(對不起,這個問題重複。現在,我刪除了另一個問題。) 我正在嘗試RoR活動記錄與關聯。 並試圖連接兩個表,這是餐廳和restaurant_translations。這些分割爲多語言支持。如何使用ActiveRecord連接兩個表?
下面是這兩個表的定義。
create_table "restaurant_translations", id: false, force: :cascade do |t|
t.integer "id", limit: 4, default: 0, null: false
t.integer "restaurant_id", limit: 4
t.string "restaurantname", limit: 255
t.string "address", limit: 255
t.string "tel", limit: 255
t.text "description", limit: 65535
t.string "lang", limit: 255, default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "restaurants", force: :cascade do |t|
t.string "restaurant_type", limit: 255
t.string "genre", limit: 255
t.string "url", limit: 255
t.string "fb", limit: 255
t.string "mailaddr", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
和模型。
class Restaurant < ActiveRecord::Base
has_many :restaurant_translations
end
class RestaurantTranslation < ActiveRecord::Base
self.table_name = 'restaurant_translations'
belongs_to :restaurant
end
然後這裏是控制器,它創造了我的頭痛。
class RestaurantController < ApplicationController
def list
@restaurants = Restaurant.all
@restaurants = @restaurants.restaurant_translation.find_by(lang: "en")
end
end
所以錯誤顯示是這樣的。你能告訴我如何寫?
@Pavan的建議引起了一些其他象這樣的錯誤。
順便說一句,我的看法是這樣的。這是.slim文件。
h1 = t :restraunt_list_title
table
thead
tr
th = t :restraunt_list_type
th = t :restraunt_list_name
th = t :restraunt_list_url
th = t :restraunt_list_genre
th = t :restraunt_list_addr
tbody
- @restaurants.each do |restaurant|
tr
td = restaurant.restaurant_type
td = restaurant.restaurant_translations.first.restaurantname
td = link_to 'here', restaurant.url
td = restaurant.genre
td = restaurant.restaurant_translations.first.address
br
您能向我們展示您的視圖示例嗎? – Wikiti
@Wikiti感謝您的評論。修改了這個問題。 –
翻譯表中沒有「餐廳名稱」列。 –