2011-07-14 9 views
0

これはおそらくn00bの質問です。 ルビーのビューで関連するモデルをレールに表示する方法

def index { @cities_users = CitiesUser.find(:all, :conditions => { :user_id => session[:user][:id] }, :include => [:city])

とビューこの中

:今

<%= @cities_users.inspect %>

、私は「ドン私はこれを行うコントローラで

class CitiesUser < ActiveRecord::Base { belongs_to :city belongs_to :user }

:私はCitiesUserモデルを持っています関連する都市を参照してください。 CitiesUserに関連付けられているCitiesについて、私はどのように反復するのですか?

マイWEBrickには言う:

CitiesUser Load (0.6ms) SELECT "cities_users".* FROM "cities_users" WHERE "cities_users"."user_id" = 1

City Load (0.8ms) SELECT "cities".* FROM "cities" WHERE ("cities"."id" IN (5,3))

ので、関連は右、ロードされていますか?どの変数が格納されているのですか、またはそれを私のCitiesUserの中に入れる方法は?

答えて

1

あなたは市の協会を経由しなければなりません。

<%= @cities_users.map{ |cu| cu.city.name }.sort.join(', ') %> 

cities_userテーブルが基本的にある場合は、[:user_idは、:CITY_ID]、その後、あなたは全くCitiesUserモデルを必要としません。代わりに、あなたのモデルは次のようになります。あなたのビューで次に

@user = current_user 
@user ||= User.find session[:user][:id] 

:ちょうどあなたはユーザーレコードを持っていることを確認し、お使いのコントローラで

class City < ActiveRecord::Base 
    has_and_belongs_to_many :users 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :cities 
    ... 
end 

(多くの認証スキームがcurrent_user方法を経由して、この盛を行います。

<%= @user.cities.map { |c| c.name }.sort.join(', ') %> 
+0

おかげで、最初の行は、私が注意点として!探し​​ていたもので、テーブルcities_usersは、日付、名前、およびDESCR標準HABTMないそれ 'sはそうしています。その場合 –

+0

、私は」 dは 'has_many:through'で移動し、cities_usersテーブルに対してクエリするのではなくARの関連付けを使用します。 –

関連する問題