2012-01-12 8 views
0

私はうまく機能(Railsの3.1アプリケーションで)私のコントローラの1に次のコードを持っている:データベース内の値によるフィルタコントローラ条件?

def index 
    #@calls = Call.all 
    @calls = Call.where(:destination => '12345678').limit(25) 

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

私は、ここから先に進むの最善の方法をうまくしようとしている、基本的に各ユーザーが自分を持っています(この場合は12345678です)。

コントローラに渡すことができるモデルでユーザーが値を持つことは可能ですか?

def index 
    #@calls = Call.all 
    @calls = Call.where(:destination => '<% @user.destination %>').limit(25) 

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

私は上記のコードは動作しないことを実現しますが、何が同じことを達成するための回避策でしょうか?もう少し情報を

更新:

私は2つのモデルがあり、一つは通話であり、他のユーザーです。

私はこのような何かをできるようにしたい:

@calls = Call.where(:destination => @user.destination_id).limit(25)' 

ここで、先がコールモデルの一部であり、destination_IDのは、ユーザーモデルの一部です。各ユーザーには異なるdestination_id値があります。

ルート

Outofhours::Application.routes.draw do 
ActiveAdmin.routes(self) 
devise_for :admin_users, ActiveAdmin::Devise.config 

get "log_out" => "sessions#destroy", :as => "log_out" 
get "log_in" => "sessions#new", :as => "log_in" 
get "sign_up" => "users#new", :as => "sign_up" 
resources :users 
resources :sessions 

resources :calls 
root :to => 'dashboards#index' 
resources :dashboards 
end 

ユーザモデル

class User < ActiveRecord::Base 
    attr_accessible :email, :company, :destination_id, :password, :password_confirmation 

    attr_accessor :password 
    before_save :encrypt_password 

    validates_confirmation_of :password 
    validates_presence_of :password, :on => :create 
    validates_presence_of :email 
    validates_uniqueness_of :email 
    validates_uniqueness_of :company 
    validates_uniqueness_of :destination_id 

    def self.authenticate(email, password) 
    user = find_by_email(email) 
    if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt) 
     user 
    else 
     nil 
    end 
    end 

    def encrypt_password 
    if password.present? 
     self.password_salt = BCrypt::Engine.generate_salt 
     self.password_hash = BCrypt::Engine.hash_secret(password, password_salt) 
    end 
    end 
end 

コールモデル

class Call < ActiveRecord::Base 
end 

答えて

1

あなたはdestiを渡すことができます国家のコントローラに配列params。それは別のモデルからですので、このコントローラは、(上記の)呼び出しモデルであり、それはUserモデルに基づくフィルタリングい場合は、この

def index  
    #@calls = Call.all 
    @calls = Call.where(:destination => current_user.destination_id).limit(25) 

    respond_to do |format|  
    format.html # index.html.erb 
    format.json { render :json => @calls }  
    end 
end 
+0

のようなコントローラでそれにアクセスすることができ、この方法では、その可能ですか? @calls = Call.where(:destination => params [@user:destination_id])。limit(25) – dannymcc

+0

する必要があります。あなたが来ているビューで '@ user'が利用可能であると仮定すると、' link_to( 'link text'、call_path(:destination_id)のようなことをして 'params'配列に' @ user.destination'を渡すだけです=> @ user.destination)) ' –

+0

私はこれを動作させることはできません。私はコール・コントローラーのインデックスメソッドで次のようにします。@calls = Call.where(@ user.destination_id => @ user.destination_id).limit(25) ' – dannymcc

関連する問題