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

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

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

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2821閲覧

画像データを投稿IDと紐付け、それぞれ出力する方法・・・

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

2クリップ

投稿2018/02/22 15:03

Rails初心者です。よろしくお願いいたします。

Twitterのようなシステムを作りたいと思っており、
投稿したつぶやきに別モデルの画像を関連付けて表示させたいと思っています。
画像はcarrierwaveを実装済みです。

画像(Pictureモデル)はうまくつぶやき(Twiモデル)と紐付けられており、
@picture = Picture.all
から

<% @picture.each do |p| %> <table> <tr> <td><%= image_tag p.twiimage.url %></td> <td><%= p.twi_id %></td> <td><%= p.user_id %></td> </tr> </table> <% end %>

上記コードで情報は問題なく取り出せるのですが、allではなく、
つぶやき(Twi.id)と同じID(Picture.twi_id)の画像(Picture.twiimage)のみを取り出して表示させたいと思い、
@picture = Picture.all を以下のコード変えたところ・・・

@twis = Twi.page(params[:page]).order(created_at: :desc) @picture = Picture.where('twi_id == ?',@twis.id)

このようなエラーが発生してしまいます。

undefined method `id' for #<Twi::ActiveRecord_Relation:0x007f44245506d0> Did you mean? ids

@twisのidが見つからないとのことだと思うのですが、
@twisをeachメソッドで取り出し、<%= t.id %>で出力すると問題なくTwi.idが取り出せます・・・

where文に誤りがあるとも思えず、どうしようもない状態です。
解決策または改善案をお持ちの方、お手数をおかけしますがどうかご助力をお願いいたします・・・

以下、モデル情報となります。

Twiモデル msg:text user_id:integer class Twi < ApplicationRecord has_many :picture, dependent: :destroy accepts_nested_attributes_for :picture end Pictureモデル twiimage:string twi_id:integer class Picture < ApplicationRecord belongs_to :twi, optional: true has_many :favorite mount_uploader :twiimage, TwiimageUploader end

以下のnewアクション(一部抜粋)にて、
つぶやき及び画像のアップロードの際に関連付けを行っています。

def new @twi = Twi.new @twi.user_id = @user.id @picture = @twi.picture.build @picture.twi_id = @twi.id @picture.user_id = @twi.user_id end

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

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

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

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

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

guest

回答1

0

ベストアンサー

Viewにて、

<% t.picture.each do |p| %> <table style="width:60%;"> <tr> <td><%= image_tag p.twiimage.url %></td> <td><%= p.twi_id %></td> </tr> </table> <% end %>

こちらで無事表示することができました!

Controllerで@pictureを指定する必要はありませんでした。

@picture = Picture.where('twi_id == ?',@twis.id) や @picture = all は削除

なお、変数t はTwiモデルの情報を取り出す為に指定した
<% @twis.each do |t| %>
です。

投稿2018/02/23 06:33

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問