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

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

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

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

Ruby

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

Q&A

解決済

1回答

1664閲覧

Rails プロフィールを編集する際に、コメントだけ変更が反映されない。

masaosan18

総合スコア65

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2020/06/26 09:31

お世話になっています。
今、Railsでアプリを作成しています。

プロフィールの編集画面を作成しておりますが、名前、アドレス、画像などは変更した際に、反映されるものの、コメントのみ変更しても反映されずに変更前の文字のままなってしまいます。

class UsersController < ApplicationController before_action :authorize, except: [:sign_up, :sign_up_process, :sign_in, :sign_in_process] before_action :redirect_to_top_if_signed_in, only: [:sign_up, :sign_in] # トップページ def top if params[:word].present? @posts = Post.where("caption like ?", "%#{params[:word]}%").order("id desc") else @posts = Post.all.order("id desc").page(params[:page]) end @recommends = User.where.not(id: current_user.id).where.not(id: current_user.follows.pluck(:follow_user_id)).limit(3) end # ユーザー登録ページ def sign_up @user = User.new render layout: "application_not_login" end # ユーザー登録処理 def sign_up_process user = User.new(user_params) if user.save user_sign_in(user) redirect_to top_path and return else # 登録が失敗したらユーザー登録ページへ flash[:danger] = "ユーザー登録に失敗しました。" redirect_to("/sign_up") end end # サインインページ def sign_in @user = User.new render layout: "application_not_login" end # サインイン処理 def sign_in_process # パスワードをmd5に変換 password_md5 = User.generate_password(user_params[:password]) # メールアドレスとパスワードをもとにデータベースからデータを取得 user = User.find_by(email: user_params[:email], password: password_md5) if user # セッション処理 user_sign_in(user) # トップ画面へ遷移する redirect_to top_path and return else # サインインが失敗した場合 flash[:danger] = "サインインに失敗しました。" redirect_to("/sign_in") end end # サインアウト def sign_out # ユーザーセッションを破棄 user_sign_out # サインインページへ遷移 redirect_to sign_in_path and return end # プロフィールページ def show # ここに処理を実装 @user = User.find(params[:id]) @posts = Post.where(user_id: @user.id) end # プロフィール編集ページ def edit @user = User.find(current_user.id) end # プロフィール更新処理 def update # ここに処理を実装 upload_file = params[:user][:image] if upload_file.present? # あった場合はこの中の処理が実行される # 画像のファイル名取得 upload_file_name = upload_file.original_filename output_dir = Rails.root.join('public', 'users') output_path = output_dir + upload_file_name File.open(output_path, 'w+b') do |f| f.write(upload_file.read) end current_user.update(user_params.merge({image: upload_file.original_filename})) # データベースに更新 else current_user.update(user_params) end redirect_to profile_path(current_user) and return end # パラメータを取得 def user_params params.require(:user).permit(:name, :email, :password, :comment) end # フォロー処理 def follow # ここに処理を実装 @user = User.find(params[:id]) if Follow.exists?(user_id: current_user.id, follow_user_id: @user.id) # フォローを解除 Follow.find_by(user_id: current_user.id, follow_user_id: @user.id).destroy else # フォローする Follow.create(user_id: current_user.id, follow_user_id: @user.id) end redirect_back(fallback_location: top_path, notice: "フォローを更新しました。") end # フォローリスト def follow_list # プロフィール情報の取得 @user = User.find(params[:id]) # ここに処理を実装 @users = User.where(id: Follow.where(user_id: @user.id).pluck(:follow_user_id)) end # 認証チェック def authorize redirect_to sign_in_path unless user_signed_in? end #22-3 プライベート private def user_params params.require(:user).permit(:name, :email, :password) end end
<div class="profile_edit container"> <%= form_for @user, url: profile_edit_path, method: :post do |f| %> <div class="field"> <%= f.label :name, "名前" %> <%= f.text_field :name, placeholder: "名前を入力して下さい。" %> </div> <div class="field"> <%= f.label :email, "メールアドレス" %> <%= f.text_field :email, placeholder: "メールアドレスを入力して下さい。" %> </div> <div class="field"> <%= f.label :comment, "コメント" %> <%= f.text_field :comment, placeholder: "自己紹介など" %> </div> <div class="field"> <label>プロフィール画像</label> <div class="file_wrap"> <%= f.file_field :image %> </div> </div> <div class="button_wrap"> <input type="submit" value="保存する" class="button"> </div> <% end %> </div>
Rails.application.routes.draw do root 'users#top' get '/top', to:'users#top', as: :top get '/follow/(:id)', to:'users#follow', as: :follow get '/sign_up', to:'users#sign_up', as: :sign_up post '/sign_up', to:'users#sign_up_process' get '/sign_in', to:'users#sign_in', as: :sign_in post '/sign_in', to:'users#sign_in_process' get '/sign_out', to:'users#sign_out', as: :sign_out get '/profile/edit', to:'users#edit', as: :profile_edit post '/profile/edit', to:'users#update' get '/follower_list/(:id)', to:'users#follower_list', as: :follower_list get '/follow_list/(:id)', to:'users#follow_list', as: :follow_list get '/profile/(:id)', to:'users#show', as: :profile # IDは下の方に書く resources :posts do member do get 'like', to:'posts#like', as: :like post 'comment', to:'posts#comment', as: :comment end end end

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

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

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

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

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

guest

回答1

0

ベストアンサー

user_paramsメソッドが2回定義されています。

投稿2020/06/26 09:36

asm

総合スコア15149

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

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

masaosan18

2020/06/26 09:54

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問