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

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

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

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails

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

Q&A

解決済

2回答

1026閲覧

findでparams[:id]がうまく動かない

chocolate24

総合スコア125

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/04/15 12:38

前提・実現したいこと

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

よろしくお願いします????

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

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

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

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

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

annaPanda

2020/04/15 13:30 編集

@tweetsはツイート全部が入っているのはわかりますが、 @tweetにはどんな条件のツイートを入れたいんですか?
chocolate24

2020/04/15 13:34

コメントありがとうございます 単純にどのツイートにいいねしているのかを示したいと思っています。
annaPanda

2020/04/15 13:43

current_userが、ですか? その、いいね用のテーブルとアソシエーションは組んでいますか? 多分コントローラでの@tweetはいらないと思います。
chocolate24

2020/04/15 13:48

アソシエーションは組んでいます。このプログラムはQiitaを参考にしたところ、@tweetが必要とのことで使っています。findの書き方などに問題などありましたらご指摘ください。
annaPanda

2020/04/15 13:54

@tweetsが複数で、その中で自分がいいねをしたのが、@tweetってことですよね? でも普通に考えて、いいねしたツイートは複数の場合もありますよね? しかし、@tweet = Tweet.find(params[:id])は単数しかとれませんよ?
annaPanda

2020/04/15 14:05

already_liked?とかの定義がわからないのでなんとも言えないですが、 コントローラの@tweet = Tweet.find(params[:id])を消して、 #ここがついてる行の@tweetをtweetかtweet.idにすればいい気がします。
guest

回答2

0

ベストアンサー

初心者マークをつけているので、あまり深い意味がないと解釈して、下記の2行を消してみてください。

@tweet = Tweet.find(params[:id])
@like = Like.new

投稿2020/04/16 05:53

no1knows

総合スコア3365

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

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

0

params[:id] が nil になっているとおもいます。
debugge で確認するとか、 p params するとかしてみてください。

index は id を指定すすよるような URL 形式にはなっていないはずです。

投稿2020/04/15 14:51

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問