前提・実現したいこと
初学者です。railsで投稿一覧表示画面に投稿内容を表示させたいです。
articles/index.html.erbファイルに表示させたい内容を記載しましたが、エラーが出て困っております。
大変お手数ですが、お力添えを頂きたく投稿させて頂きました。
何卒、よろしくお願いします!
発生している問題・エラーメッセージ
NoMethodError in Articles#index undefined method `user' for #<ActiveRecord::Relation []> Did you mean? super
該当のソースコード
ruby
1■ビュー【articles/index.html.erb】 2<%= link_to "新規投稿", new_article_path ,class:"#" %> 3 4<%= link_to @article.user.nickname, article_path(article.id) %> 5<%= link_to @article.post, article_path(article.id) %> 6<%= link_to image_tag(article.image), article_path(article.id) %>
ruby
1■コントローラー【controllers/article_controller.rb】 2class ArticlesController < ApplicationController 3 4 def index 5 @article = Article.all 6 end 7 8 def new 9 @article = Article.new 10 end 11 12 def create 13 @article = Article.new(article_params) 14 end 15 16 private 17 def article_params 18 params.require(:article).permit(:post, :image).merge(user_id: current_user.id) 19 end 20end
ruby
1■Articlesモデル【models/article.rb】 2class Article < ApplicationRecord 3 4 belongs_to :user 5 has_one_attached :image 6 7 validates :post, presence: true 8 9end
ruby
1■usersモデル【models/user.rb】 2class User < ApplicationRecord 3 devise :database_authenticatable, :registerable, 4 :recoverable, :rememberable, :validatable 5 6 has_many :records 7 has_many :articles 8 9 validates :name , presence: true 10 validates :nickname , presence: true 11 validates :pitching , presence: true 12 validates :batting , presence: true 13 validates :position , presence: true 14end
ruby
1■ルーティング【config/routes.rb】 2Rails.application.routes.draw do 3 devise_for :users, controllers: { registrations: 'users/registrations', sessions: 'users/sessions'} 4 root 'tops#index' 5 resources :records, only: [:index, :new, :create] 6 resources :articles, only: [:index, :new, :create] 7end
試したこと(いずれも解決に至らず)
①ビューファイルの記述の確認
→「@article」を「article」に変更しリロード
→「user.nickname」を「user_id.nickname」に変更しリロード
②データベースのカラム名の確認
→「articlesテーブル」と「usersテーブル」の確認、記述に問題ない様に見える
③「articlesモデル」と「usersモデル」のアソシエーションの確認
→記述に問題ない様に見える
補足情報(FW/ツールのバージョンなど)
rails:6.0.0
データベース:MySQL
ログイン機能:deviseを使用
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/11 12:44