Railsアプリケーションプログラミングの勉強中です。
あるテーブルにデータが登録されているかいないかで表示するページを切り替えたいのですが上手く切り替わってくれません。
条件分岐で切り換えができると思うのですが以下のコードでは切り換えをせずにデータがあっても無くてもdashboard_bが
表示されてしまいます。(データの存在をチェックしていないので当然だと思います。)
class Customer::TopController < Customer::Base skip_before_action :authorize def index if Bank.find_by(params[:id]) render action: 'dashboard_b' else render action: 'dashboard_a' end end end
テーブルの構造は以下のようになっています。
customerテーブルとbanksテーブルは1対1で関連付けされています。
参照先のテーブル customers # has_one :bank
参照元のテーブル banks # belongs_to :customer
・banksテーブルには外部キー customer_id があります。
そのほか
・bk_name
・office
・account
・acc_name
・acc_name_kana
のカラムがあります。
そこでログインに成功したcustomerに関連付けされたbanksテーブルにデータが登録されているかいないかを判断し、表示されるページを
'dashboard_b'と 'dashboard_a' に切り換えたいのですが記述方法がわからないのでどなたか教えていただけないでしょうか?
条件分岐の記述を以下のようにいろいろ変えてやってみましたが全て同じNoMethodErrorが発生してしまいます。
エラー内容 NoMethodError in Customer::TopController#index undefined method `bank_id' for nil:NilClass Extracted source (around line #5): 4 def index 5 if Bank.find(current_customer.bank_id) 6 render action: 'dashboard_b' 7 else 8 render action: 'dashboard_a'
試したコード if Bank.find(current_customer.bank_id) # bank_idメソッドは作っていないのでエラーがでました。 if Bank.find_by(current_customer.bank_id) if Bank.find_by(current_customer.customer_id) if Bank.find_by(customer_id) if Bank.find_by(bk_name) などです。
どう記述すればログイン者と関連付けされたbanksテーブルの記述の有無をチェックし表示を切り替えることが
できるのでしょうか?自力ではどうしようもない所まで悩んでいます。どなたか教えていただけないでしょうか?
宜しくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/14 09:22