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
のようなコントローラでそれにアクセスすることができ、この方法では、その可能ですか? @calls = Call.where(:destination => params [@user:destination_id])。limit(25) – dannymcc
する必要があります。あなたが来ているビューで '@ user'が利用可能であると仮定すると、' link_to( 'link text'、call_path(:destination_id)のようなことをして 'params'配列に' @ user.destination'を渡すだけです=> @ user.destination)) ' –
私はこれを動作させることはできません。私はコール・コントローラーのインデックスメソッドで次のようにします。@calls = Call.where(@ user.destination_id => @ user.destination_id).limit(25) ' – dannymcc