ruby on railseの勉強始めて2週間の初心者です。
ログイン機能付きのホームページを作成しています。
ログイン機能にdeviceを用いて個人の情報を保存した後
プロフィールページに保存された名前を表示したいと考えています。
deviceのモデル名をloginとし
login.rb
belongs_to :user, dependent: :destroy
プロフィールページのモデル名をuserとし
use.rb
belongs_to :login,optional: true
routes.rb
resources :users, only: [:show, :edit, :update] resources :logins
show.html.erb (user)
def show @user = login.find(params[:id]) @post_images = @user.post_images.page(params[:page]).reverse_order end
このようなエラーが出てしまいできません。
そもそもモデル同士をアソシエーションして違うモデルからデータを引用する方法が間違っているのかなと思うのですが、どなたかアドバイスいただけるとありがたいいです。
エラーとなっている「login」は、どこから値を取得することを意図したものでしょうか?
deviceのマイグレーションファイルである20200729102344_devise_create_logins.rbの t.string :nameから値を取得することを意図しています。
おかしなところが多々あるかと思いますが、ヒントだけでもいただけるとありがたいです。
Loginの、「どのレコード」について値を取りたいのでしょうか?
Loginの自分のデータが保存されたレコード(現在は自分しか保存していないのでid=1)のnameというカラムから値を取りたいと考えています。
current_login.idを利用すると考えましたが、解決しませんでした‥
ログイン機能は実装していますか?
先日実装しました。
今なぜかlogins/sign_inで開くとshow.html.erbのページに飛んでしまって開けませんが‥
Rails.application.routes.draw do
devise_for :logins
resources :books, only: [:new, :create, :index, :show,:edit] do
end
resources :users, only: [:show, :edit, :update]
end
loginでなくcurrent_loginを使う、のが適切なのではないでしょうか?
そこに付けるのが正しかったのですね、ありがとうございます。
回答1件
あなたの回答
tips
プレビュー