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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

3128閲覧

作成したユーザー編集情報がDBに保存されない問題

koh4168

総合スコア11

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/07/08 04:58

前提・実現したいこと

作成したユーザー編集情報がDBに保存されない問題。

rails初心者です。
deviseを使い、会員登録ができるように実装しました。
deviseのデフォルトでついている、メールアドレス、パスワード変更ビューとは別にユーザー編集機能を作ったところ、エラーメッセージは出ないのですがDBに保存されません。
ユーザー情報のメールアドレス、パスワード変更や、ユーザーが投稿できるイベント情報の編集はdbにしっかり保存されます。

ご教示よろしくお願いします。

config/routes.rb

Ruby

1Rails.application.routes.draw do 2 devise_for :users 3 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 4 root to: "top#index" 5 resources :events 6 resources :users 7 end 8

###app/controllers/users_controller.rb

RUby

1class UsersController < ApplicationController 2 def show 3 @user= User.find(params[:id]) 4 @events= Event.where(user_id: @user.id).page(params[:page]).per(10) 5 end 6 7 def edit 8 @user=User.find(params[:id]) 9 end 10 11 def update 12 @user=User.find(params[:id]) 13 if @user_id == current_user.id 14 @user.update(user_params) 15 end 16 unless @user.save 17 render action: :edit 18 end 19 end 20 21 private 22 def user_params 23 params.require(:user).permit(:image,:name,:text,:link).merge(user_id: current_user.id) 24 end 25end

app/views/users/edit.html.erb

Ruby

1<h3> 2 ユーザー情報を編集する 3</h3> 4 5<%= form_for @user do |f| %> 6 7 <%= f.label "プロフィール写真" %> 8 <%= f.file_field :image %><br><br> 9 10 <%= f.label "名前" %> 11 <%= f.text_field :name, placeholder: '名前'%><br><br> 12 13 <%= f.label "自己紹介" %> 14 <%= f.text_area :text, placeholder: '自己紹介文を記載してください',style: 'width: 50%; height: 100px'%><br><br> 15 16 <%= f.label 'link編集' %> 17 <%= f.text_field :link, placeholder: 'リンク先'%><br><br> 18 19 <div class="col10 push1"> 20 <%= button_tag type: "submit", class: "btn btn--block" do %> 21 変更する<i class="icon-arrow-right"></i> 22 <% end %> 23 </div> 24<% end %>

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

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

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

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

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

guest

回答1

0

ベストアンサー

Controllerの@user_idを@user.idに変更したら動く気がします

diff

1 def update 2 @user=User.find(params[:id]) 3- if @user_id == current_user.id 4+ if @user.id == current_user.id 5 @user.update(user_params) 6 end 7 unless @user.save 8 render action: :edit 9 end 10 end

投稿2019/07/10 01:50

satoshih

総合スコア797

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

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

koh4168

2019/07/10 05:47

回答ありがとうございます。 指摘していただいた書き方に変更し、user_params内のmergeを削除したところ、DBに保存されました。 助かりました。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問