前提・実現したいこと
Ruby on Rails でオリジナルアプリを作成しております。
ActiveHashを使い、ユーザーが選択肢登録した情報をViewに表示させたいと思っております。
発生している問題・エラーメッセージ
https://gyazo.com/1726c55f5854d7748d1476baf326cee3
下記のような状況です。idが表示されている状況です。
商品検索
野球歴
指定なし
仮 5 3 5 岩手県
山田太郎 3 4 2 茨城県
田中太郎 4 3 6 埼玉県
ちなみにPrefectureだけはしっかりと表示できるのですが、他は上記のようなエラーが出てしまいます。
NoMethodError in Users#index Showing /Users/kamiyatakashi/projects/kusayakyu/app/views/users/index.html.erb where line #16 raised: undefined method `term' for #<User:0x00007f904808cfe8> Did you mean? term_id Extracted source (around line #16): 14 15 16 17 18 19 <li> <%= user.name %> <%= user.term.id %> <%= user.level_id %> <%= user.frequency_id %> <%= user.prefecture.name %> Rails.root: /Users/kamiyatakashi/projects/kusayakyu Application Trace | Framework Trace | Full Trace app/views/users/index.html.erb:16 app/views/users/index.html.erb:11 app/views/users/index.html.erb:4 Request Parameters:
該当のソースコード
html.erb
1index.html.erb 2<h1> 3 商品検索 4</h1> 5<%= search_form_for @p, url: users_search_path do |f| %> 6 <%= f.label :term_id_eq, '野球歴' %> 7 <%= f.collection_select :term_id_eq, Term.all,, :id, :term_id, include_blank: '指定なし' %> 8 <br> 9 <%= f.submit '検索' %> 10 <br> 11 <%# 商品一覧 %> 12 <% @users.each do |user| %> 13 <td> 14 <br> 15 <li> 16 <%= user.name %> 17 <%= user.term_id %> 18 <%= user.level_id %> 19 <%= user.frequency_id %> 20 <%= user.prefecture.name %> 21 </li> 22 <% end %> 23<% end %>
rb
1users_controller.rb 2class UsersController < ApplicationController 3before_action :search_term_id, only: [:index, :search] 4 5 def index 6 @users = User.all 7 end 8 9 def search 10 @results = @p.result 11 end 12 13 private 14 def search_term_id 15 @p = User.ransack(params[:q]) 16 end 17 18 def set_user_column 19 @user_termid = User.select("term_id").distinct # 重複なくterm_idカラムのデータを取り出す 20 end 21 22end
rb
1term.rb 2class Term < ActiveHash::Base 3 self.data = [ 4 { id: 1, name: '--' }, 5 { id: 2, name: '社会人野球' }, 6 { id: 3, name: '大学野球' }, 7 { id: 4, name: '高校野球' }, 8 { id: 5, name: '中学野球' }, 9 { id: 6, name: '趣味程度' }, 10 { id: 7, name: '初心者' } 11 ] 12 13 include ActiveHash::Associations 14 has_many :users 15end
class User < ApplicationRecord extend ActiveHash::Associations::ActiveRecordExtensions belongs_to :prefecture, :term, :level, :frequency, :registration devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_one_attached :avatar # validates_format_of :password, with: PASSWORD_REGEX, message: 'には英字と数字の両方を含めて設定してください' with_options presence: true, format: { with: /\A[ぁ-んァ-ヶ一-龥々]+\z/, message: '全角文字を使用してください' } do validates :name end with_options presence: true, format: { with: /\A[ァ-ヶ]+\z/, message: '全角カナ文字を使用してください' } do validates :name_kana end validates :avatar, presence: true validates :birthday, presence: true validates :prefecture_id, presence: true validates :term_id, presence: true validates :level_id, presence: true validates :frequency_id, presence: true validates :registration_id, presence: true validates :prefecture_id, :term_id, :level_id, :frequency_id, :registration_id, numericality: { other_than: 1 } end
試したこと
user.frequency.name というようにそれぞれのモデルからnameを表示させるように
しましたがうまくいかず、原因がわからない状態です。誰かご教示いただけないでしょうか?
回答1件
あなたの回答
tips
プレビュー