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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。