🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1333閲覧

[Rails]ActiveHashを使ったビューでの表示方法がわからない

naonao-program

総合スコア4

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/03/16 15:48

編集2021/03/17 10:54

# 解決したいこと
ActiveHashでデータベース上にあるデータをビューに表示するときに番号ではなくActiveHashで設定した番号(例 region_idが3なら 青森県)みたいなような表示ができるように実装したい

#やってみたこと
イメージ説明

ruby

1<%= gym.region.name%>

この場合は以下のようなエラーが出る
イメージ説明

ruby

1<%= gym.region_id %>

この場合はデータベースに保存されている番号がそのまま出力される

該当するコントローラーの写真

ruby

1class GymInformationController < ApplicationController 2 before_action :authenticate_user!, only: %i[new create] 3 def index 4 @gyms = GymInformation.includes(:user).order('created_at DESC') 5 end 6 7 def new 8 @gym = GymInformation.new 9 end 10 11 def create 12 @gym = GymInformation.new(gym_information_params) 13 if @gym.save 14 redirect_to root_path 15 else 16 render :new 17 end 18 end 19 20 def show 21 @gym = GymInformation.includes(:user) 22 end 23 24 private 25 26 def gym_information_params 27 params.require(:gym_information).permit(:boulder_or_lead_id, :name, :region_id, :address, :grade_sence_id, 28 :people_day_id, :people_time1_id, :people_time2_id, :people_vibe_id, :clerk_vibe_id, :other, images: []).merge(user_id: current_user.id) 29 end 30end 31

該当するモデルの写真

ruby

1class GymInformation < ApplicationRecord 2 belongs_to :user 3 has_many_attached :images 4 extend ActiveHash::Associations::ActiveRecordExtensions 5 6 with_options presence: true do 7 validates :images 8 validates :name 9 validates :address 10 with_options numericality: { other_than: 1 } do 11 validates :boulder_or_lead_id 12 validates :region_id 13 validates :grade_sence_id 14 validates :people_day_id 15 validates :people_day_id 16 validates :people_time1_id 17 validates :people_time2_id 18 validates :people_vibe_id 19 validates :clerk_vibe_id 20 end 21 end 22 23 extend ActiveHash::Associations::ActiveRecordExtensions 24 belongs_to_active_hash :boulder_or_lead_id 25 belongs_to_active_hash :region_id 26 belongs_to_active_hash :grade_sence_id 27 belongs_to_active_hash :people_day_id 28 belongs_to_active_hash :people_time1_id 29 belongs_to_active_hash :people_time2_id 30 belongs_to_active_hash :people_vibe_id 31 belongs_to_active_hash :clerk_vibe_id 32end

#Active Hashのモデルの写真

ruby

1class Region < ActiveHash::Base 2 self.data = [ 3 { id: 1, name: '--' }, 4 { id: 2, name: '北海道' }, 5 { id: 3, name: '青森県' }, 6 { id: 4, name: '岩手県' }, 7 { id: 5, name: '宮城県' }, 8 { id: 6, name: '秋田県' }, 9 { id: 7, name: '山形県' }, 10 { id: 8, name: '福島県' }, 11 { id: 9, name: '茨城県' }, 12 { id: 10, name: '栃木県' }, 13 { id: 11, name: '群馬県' }, 14 { id: 12, name: '埼玉県' }, 15 { id: 13, name: '千葉県' }, 16 { id: 14, name: '東京都' }, 17 { id: 15, name: '神奈川県' }, 18 { id: 16, name: '新潟県' }, 19 { id: 17, name: '富山県' }, 20 { id: 18, name: '石川県' }, 21 { id: 19, name: '福井県' }, 22 { id: 20, name: '山梨県' }, 23 { id: 21, name: '長野県' }, 24 { id: 22, name: '岐阜県' }, 25 { id: 23, name: '静岡県' }, 26 { id: 24, name: '愛知県' }, 27 { id: 25, name: '三重県' }, 28 { id: 26, name: '滋賀県' }, 29 { id: 27, name: '京都府' }, 30 { id: 28, name: '大阪府' }, 31 { id: 29, name: '兵庫県' }, 32 { id: 30, name: '奈良県' }, 33 { id: 31, name: '和歌山県' }, 34 { id: 32, name: '鳥取県' }, 35 { id: 33, name: '島根県' }, 36 { id: 34, name: '岡山県' }, 37 { id: 35, name: '広島県' }, 38 { id: 36, name: '山口県' }, 39 { id: 37, name: '徳島県' }, 40 { id: 38, name: '香川県' }, 41 { id: 39, name: '愛媛県' }, 42 { id: 40, name: '高知県' }, 43 { id: 41, name: '福岡県' }, 44 { id: 42, name: '佐賀県' }, 45 { id: 43, name: '長崎県' }, 46 { id: 44, name: '熊本県' }, 47 { id: 45, name: '大分県' }, 48 { id: 46, name: '宮崎県' }, 49 { id: 47, name: '鹿児島県' }, 50 { id: 48, name: '沖縄県' } 51 ] 52 53 include ActiveHash::Associations 54 has_many :users 55 has_many :gym_information 56end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gambaldia

2021/03/16 20:59

Gyms model と ActiveHash model の中身が無いと調べようが無いと思います。 タグですが、 rails以外は関係ないと思う
gambaldia

2021/03/17 09:48

画像ですかぁ? コピペしにくいです。 3枚目の画像は2枚目と同じみたいです。
guest

回答1

0

ベストアンサー

belongs_to_active_hash :region_id

belongs_to_active_hash :region
ではないでしょうか。
違ったらすみません。

投稿2021/03/17 12:58

gambaldia

総合スコア266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naonao-program

2021/03/17 13:22

やってみると解決しました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問