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

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

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

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

Ruby on Rails

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

Q&A

3回答

5927閲覧

[Rails] controllerにmodelから複数の情報を渡す

7hikolin

総合スコア124

Ruby

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

Ruby on Rails

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

1グッド

0クリップ

投稿2016/03/04 04:22

こんな感じでモデルの情報を渡したいんですが、どうしたら良いですか?

ruby

1モデル 2 3class TestModel < ActiveRecord::Base 4 def self.test(user_id) 5 user = TestModel.find_by_id(user_id) 6 detail = TestModelDetail.find_by_id(user.detail_id) 7 img = PhotoTable.find_by_id(detail.img_id).image_url 8 end 9end 10 11コントローラー 12 13def list 14 user_id = session[:user_id] 15 details = TestModel.test(user_id) 16 @user = details.user 17 @detail = details.detail 18 @img = details.img 19end
mhashi👍を押しています

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

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

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

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

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

guest

回答3

0

2つの案を示します。

  1. hash を返す

  2. 配列を返す

  3. hash を返す

ruby

1def self.test(user_id) 2 { user: TestModel.find_by_id(user_id), 3 detail: estModelDetail.find_by_id(user.detail_id), 4 img: PhotoTable.find_by_id(detail.img_id).image_url 5 } 6end 7 ... 8details = TestModel.test(user_id) 9@user = details[:user] 10@detail = details[:detail] 11@img = details[:img]
  1. 配列を返す

ruby

1def self.test(user_id) 2 [ TestModel.find_by_id(user_id), 3 estModelDetail.find_by_id(user.detail_id), 4 PhotoTable.find_by_id(detail.img_id).image_url 5 ] 6end 7 ... 8@user, @detail, @img = TestModel.test(user_id)

投稿2016/03/04 11:15

katoy

総合スコア22324

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

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

Yurakuan

2016/04/01 22:41

私も配列で返すのが個人的には一番好みです。
guest

0

ちゃんとAssociationを使ったほうが良いかもしれません。

モデル

class TestModel < ActiveRecord::Base has_one :test_model_detail end class TestModelDetail < ActiveRecord::Base has_one :photo_table end class PhotoTable < ActiveRecord::Base end

コントローラー

def list user_id = session[:user_id] @user = TestModel.find(user_id) @detail = @user.test_model_detail @img = @detail.photo_table.image_url end

投稿2017/03/30 06:16

sevenine

総合スコア8

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

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

0

json形式にしてreturnすればいいと思います。

ruby

1モデル 2 3class TestModel < ActiveRecord::Base 4 def self.test(user_id) 5 user = TestModel.find_by_id(user_id) 6 detail = TestModelDetail.find_by_id(user.detail_id) 7 img = PhotoTable.find_by_id(detail.img_id).image_url 8 json = {:user => user, :detail=> detail,:img =>img } 9 end 10end 11

投稿2016/03/04 04:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

msyk_tym

2016/10/14 22:33

hashで入れてreturnでjsonにするのが好きです。 jsonにするのは、to_jsonで出来ます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問