前提・実現したいこと
railsでtwitterもどきを作成しています。
いいね機能を実装する際に引数としてしてそれぞれのツイート情報(@tweet)をおきたいのですが、コントローラーで定義する時点でエラーが発生しました。
発生している問題・エラーメッセージ
おそらくidなしでは探せないよというエラーなのでしょうが解決できませんでした。
該当のソースコード
ruby
1 def index 2 @tweets= Tweet.all.order(id: "DESC") 3 @tweet = Tweet.find(params[:id]) 4 @like = Like.new 5 end
また、ここでていぎしたインスタンス変数@tweetを下のindex.
ruby
1<% @tweets.each do|tweet|%> 2 <p><%= tweet.user_name %>さん</p> 3 <p><%= tweet.text %></p> 4 #省略 5 <%= link_to "datils","/tweets/#{tweet.id}",method: :get%> 6 <% if user_signed_in? %> 7 <% if current_user.already_liked?(@tweet)%> #ここ 8 <div class="good_button"> 9 <%=link_to image_tag("p1.jpeg"),"/goods",method: :post %> 10 </div> 11 <% else %> 12 <%= button_to 'delete like',tweet_like_path(@tweet),method: :delete%> #ここ 13 <% end %> 14 <% end %> 15 <%= tweet.liked_users.count %> 16 <p class="sample14"></p> 17<% end %>
補足情報(FW/ツールのバージョンなど)
Ruby on Rails 5.2.1
よろしくお願いします????
@tweetsはツイート全部が入っているのはわかりますが、
@tweetにはどんな条件のツイートを入れたいんですか?
コメントありがとうございます
単純にどのツイートにいいねしているのかを示したいと思っています。
current_userが、ですか?
その、いいね用のテーブルとアソシエーションは組んでいますか?
多分コントローラでの@tweetはいらないと思います。
アソシエーションは組んでいます。このプログラムはQiitaを参考にしたところ、@tweetが必要とのことで使っています。findの書き方などに問題などありましたらご指摘ください。
@tweetsが複数で、その中で自分がいいねをしたのが、@tweetってことですよね?
でも普通に考えて、いいねしたツイートは複数の場合もありますよね?
しかし、@tweet = Tweet.find(params[:id])は単数しかとれませんよ?
already_liked?とかの定義がわからないのでなんとも言えないですが、
コントローラの@tweet = Tweet.find(params[:id])を消して、
#ここがついてる行の@tweetをtweetかtweet.idにすればいい気がします。
回答2件
あなたの回答
tips
プレビュー