質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

2542閲覧

Rails:数値に対応した文字列を表示したい

kento735

総合スコア10

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

2クリップ

投稿2019/05/15 03:57

お世話になります。
力及ばず質問させていただきます。

今回、練習として「顧客データの登録と編集」ができるアプリを作っております。
顧客には「一般」「上級」「ゴールド」の三種類のランクを設定できるようになっています。
それぞれ1,2,3の数値を割り振ってテーブルに保存するようにしました。

前提・実現したいこと

顧客情報のリスト表を作成した際にrankカラムが1の顧客には「一般」、2の顧客には「上級」、3の顧客には「ゴールド」と表示するにはどのようにすればいいでしょうか。
力を貸していただければ幸いです。

該当のソースコード

list.html.erb 

Ruby

1<h2>顧客一覧</h2> 2<p>情報を編集したい顧客の名前を押して下さい</p> 3 4 5<table class="seito_list"> 6 <tr> 7 <th>名前</th> 8 <th>電話番号</th> 9 <th>ランク</th> 10 </tr> 11<% @list.each do |li| %> 12 <tr> 13 <td><%= link_to(li.name,"/#{li.id}") %></td> 14 <td><%= li.phone %></td> 15 <td><%= li.rank %></td> 16 </tr> 17<% end %> 18</table> 19 20<%= link_to('トップへ戻る','/') %> 21```当たり前なのですが、このままではli.rankは数値で表示されますので、どうにかして数値に対応したランクの文字列を表示したいのです。 22 23 24register.html.erb(ここで顧客情報を登録します) 25```ここに言語を入力 26<h2>顧客情報登録</h2> 27<%= form_for @clients,:url => {:action => :create} do |f| %> 28<%= f.label :"名前" %><%= f.text_field :name %><br> 29<%= f.label :"電話番号" %><%= f.text_field :phone %><br> 30<%= f.label :"ランク" %><%= f.select :rank,[["一般",1], ["上級",2], ["ゴールド",3]], :prompt => "選択してください" %><br> 31 32<br> 33 34<%= f.submit "決定", data: { confirm: "登録しますか?"} %> 35 36<% end %>

routes.rb

Rails.application.routes.draw do get '/' => 'home#index' get 'home/register' => 'home#register' get 'home/list' => 'home#list' get '/:id' => 'home#edit' patch '/home/update' => 'home#update' post 'home/create' => 'home#create' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end

home_controller.rb

class HomeController < ApplicationController def index @datas = Client.all end def register @clients = Client.new end def list @list = Client.all end def edit @clients = Client.find_by(id: params[:id]) end def create @clients = Client.create(name: params[:client][:name], phone: params[:client][:phone], rank: params[:client][:rank]) redirect_to("/") end def update @clients = Client.find_by(id: params[:client][:id]) @clients.update(name: params[:client][:name], phone: params[:client][:phone], rank: params[:client][:rank]) redirect_to("/home/list") end end

稚拙な質問とは思いますが、ご教示いただければ幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

一案です。動作は確認していませんし、これがベストだとも思いませんが、値と文字列のハッシュをどこかに定義して表示時に参照する方針でひとまずよいのではないかと考えます。

home_controller.rb

ruby

1 def list 2 @list = Client.all 3 @rank_labels = {1: '一般', 2: '上級', 3: 'ゴールド'} 4 end

list.html.erb

erb

1 <td><%= @rank_labels[li.rank] %></td>

投稿2019/05/15 04:12

編集2019/05/15 04:34
iwamot

総合スコア1154

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

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

kento735

2019/05/15 04:27

ご回答ありがとうございます。 無事表示することができました。 基礎中の基礎知識が抜け落ちていたみたいなので復習するきっかけにもなりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問