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

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

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

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

Ruby

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

Q&A

解決済

1回答

2389閲覧

【rails】viewにデータを抽出、表示すると#<モデル名:0x007f13959bb1f8>となる

seen

総合スコア49

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2018/04/04 11:21

お世話になっております。

音楽ファイル名が入ったstring型のデータを抽出して表示させようとしたところ文字化けのような

#<モデル名:0x007f13959bb1f8> ```といった表示になってしまします。 song: ファイル名.mp3 となっているレコードが3件入っていて

#コントローラー
class ArtistsController < ApplicationController

def radio
@artists = Artist.select("song").all
end

#view
<% @artists.each do |so| %>
<%= so %>
<% end %>

#ブラウザ
#Artist:0x007f139617d058 #Artist:0x007f139617cef0 #Artist:0x007f139617cdb0

mp3のファイル名が3つ出てきてほしいのですがこの文字列は何なのでしょうか。 単純に下記のようなことをしたところファイルを読み込まないので
<audio controls> <source src="<%= @artists %>" type="audio/mp3"/> </audio> ```

原因は登録した.mp3ファイルが@artistsにセットされていないからではないかと思い表示させてみると文字化けのようになっていました。

よろしくおねがいします。」

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんばんは。
Artistというテーブルのsong列にファイル名が入っているということで良いでしょうか?

Artist.select("song").all とすると、返ってくるデータは song列のstringの配列ではなくて、ActiveRecordのモデルのオブジェクトの配列になります。

期待値: [ “xxxx.mp3", "1111.mp3", "222.mp3” ] かと思いますが、実際は
[ { id: 1, song: xxxx.mp3 }, .... ] みたいな感じです。

soのところを、so.song にしてみるといかがでしょう。

<% @artists.each do |so| %> <%= so.song %> <% end %>

参考:https://apidock.com/rails/ActiveRecord/QueryMethods/select

投稿2018/04/04 11:40

編集2018/04/04 11:41
suama

総合スコア1997

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

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

seen

2018/04/04 12:44

ありがとうございます! そのとうりでした! お察しの通りsongカラムのデータのみに絞り込んでviewに行った方がいいのだろうと思いましたが、.songで絞らなければいけないのならコントローラーは @artists = Artist.all でも同じですかね... 使いどころがわかっていないようで(汗) 解決していただき感謝いたします。ありがとうございました!
suama

2018/04/04 12:51

こんばんは、良かったです! select(“カラム名”)だと、抽出したい列やデータを絞り込むので、結果的にデータ量が少なかったり使い方によってはインデックスをうまく効かせた形で利用できるかなと思います。 もし、song列のstringの配列として取り出したい場合は、pluck(:song) という方法もありますので、よかったら比べてみてくださいね。
seen

2018/04/04 13:21

ありがとうございます! 適材適所、考えてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問