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

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

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

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

Q&A

1回答

1382閲覧

編集機能を実装しようとしてもエラーが出る

madao

総合スコア24

Ruby on Rails 4

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

0グッド

0クリップ

投稿2016/12/19 13:55

編集2022/01/12 10:55

updateで編集機能を実装しようとしているんですが
ActiveRecord::RecordNotFound (Couldn't find Tweet with 'id'=:id):というエラーが出ます。findの所を find_byにしてもダメです。
どうしたら良いのかご教授ください
以下Controllerです

def edit
@tweet = Tweet.find(id_params[:id])
end

def update
tweet = Tweet.find(id_params[:id])
if tweet.user_id == current_user.id
tweet.update(text: tweet_params[:text], image: tweet_params[:image])
end
end

private
def tweet_params
params.permit(:name, :image, :text)
end

def id_params
params.permit(:id)
end

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

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

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

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

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

IPU

2016/12/20 05:58

if tweet.user_id == current_user.id これって何をしたくて書いてますか?
madao

2016/12/20 06:36

その投稿をした本人かどうかを判別しようと思って書きました。
guest

回答1

0

ごちゃごちゃ書いてしまったので、新しくこちらに回答を記載します。

まず、以下の処理を入れて、ちゃんとprivateに書いてあるメソッドが
正しく機能しているか確認しましょう。

ruby

1def edit 2 puts id_params 3 @tweet = Tweet.find(id_params[:id]) 4end 5 6def update 7 puts tweet_params 8 puts id_params 9 tweet = Tweet.find(id_params[:id]) 10 if tweet.user_id == current_user.id 11 tweet.update(text: tweet_params[:text], image: tweet_params[:image]) 12 end 13end

で、ログを見て、自分が欲しいパラメータが入っているかを確認してください。

【追記】
privateメソッドの書き方が良くないと思いますね。
ちょっとviewとかで何をしてるかわからないですが、見せてもらったcontrollerだけで判断すると、
こんな感じで書くのが良いかな。

ruby

1def edit 2 @tweet = Tweet.find_by(id: params[:id]) 3end 4 5def update 6 tweet_uid = User.find_by(name: tweet_params[:name]).id 7 if tweet_uid == current_user.id 8 @tweet.update(tweet_params) 9 end 10end 11 12private 13def tweet_params 14 params.require(:tweet).permit(:name, :image, :text) 15end

Userとtweetのテーブル情報が公開されてないので、そこは予想で書いたけど。

投稿2016/12/20 05:56

編集2016/12/21 02:40
IPU

総合スコア283

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

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

madao

2016/12/20 13:19

"id"=>":id" idに:idというパラメーターが入っているのですが、:idが変化してくれません。 どうすれば数字に変化してくれますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問