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

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

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

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

1148閲覧

user情報の変更が更新されない

harabou

総合スコア5

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2020/03/19 10:55

会員情報の更新をしたい

railsで動画投稿アプリを作成中です。
会員情報を更新する機能を実装中に以下のエラーが発生しました。

発生している問題

会員情報が更新できない

該当のソースコード

haml

1.form 2 .header 3 = link_to root_path, class: "link-decoration" do 4 nyaotube 5 %hr 6 .form__container 7 .form__title 8 アカウントの編集 9 .container__title 10 会員情報入力 11 = form_with model: @user, url: user_registration_path, local: true, method: :post do |f| 12 13 .title 14 ニックネーム 15 =f.text_field :nickname, class: "text-field", placeholder: ' 例)猫田ねこ' 16 .title 17 メールアドレス 18 =f.email_field :email, class: "text-field", placeholder: ' PC・携帯どちらでも可' 19 .title 20 パスワード 21 =f.password_field :password, autocomplete: "off", class: "text-field", placeholder: '7文字以上の半角英数字' 22 .title 23 パスワード確認 24 =f.password_field :password_confirmation, autocomplete: "off", class: "text-field", placeholder:"パスワード確認" 25 26 .title 27 「新規登録」のボタンを押すことにより、 28 = link_to '#', class: 'links-color' do 29 利用規約 30 に同意したものとみなします 31 =f.submit '更新', class: "submit-btn" 32 = link_to root_path do 33 %button.back-btn トップに戻る

haml

1class UsersController < ApplicationController 2 def edit 3 end 4 5 def update 6 if currrent_user.update(user_params) 7 redirect_to root_path 8 else 9 render :edit 10 end 11 end 12 13 private 14 15 def user_params 16 params.require(:user).permit(:nickname, :email) 17 end 18end 19

haml

1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :validatable 6 7 validates :nickname, presence: true 8end 9

haml

1Rails.application.routes.draw do 2 devise_for :users 3 4 root "posts#main_menu" 5 resources :users, only: [:edit, :update] 6end 7

試したこと

dbはどうなっているか確認したところ、usersテーブルが存在しませんでした。
rails db:migraite忘れかなと思いましたが無反応でした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

自己解決

こちらのqiitaを参考にさせていただきました。
https://qiita.com/shimadama/items/caac6a0b40bbaddd9a6f

詳細
gemfileの
gem 'sqlite3'を
gem 'mysql2', '>= 0.4.4'
に変更

bundle install

databese.ymlの記述をmysqlに合わせる。

# SQLite version 3.x # gem install sqlite3 # # Ensure the SQLite 3 gem is defined in your Gemfile # gem 'sqlite3' # default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: socket: /tmp/mysql.sock development: <<: *default database: nyaotube_development # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: nyaotube_test production: <<: *default database: nyaotube_production username: root password: <%= ENV['DATABASE_PASSWORD'] %> socket: /var/lib/mysql/mysql.sock

rails db:setup

UsersController

1 def update 2 if currrent_user.update(user_params) 3 redirect_to root_path 4 else 5 render :edit 6 end 7 end

上記のcurrent、rが一つ多いので削除

haml

1 = form_with model: @user, url: user_registration_path, local: true, method: :post do |f|

haml

1 = form_with model: current_user, url: user_path, local: true do |f|

上記で正常に動くようになりました。今回一番の失敗は同じ名前のアプリを作ってしてしまい、前回作ったアプリのDBが今回のアプリだと勘違いしてしまった事にあります。
ご回答いただいた方、ありがとうございました。

投稿2020/03/23 06:20

編集2020/03/23 07:48
harabou

総合スコア5

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

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

0

users.rbは存在するmodelに対する設定ファイルに過ぎないので、
usersテーブルがそもそも存在していないと今回の更新といったようなCRUDな動作はできません
migrateはmigrationファイルを実行するコマンドやその一連の流れの通称なので、
migrationファイルを作成してないのではないでしょうか?

投稿2020/03/21 10:35

H4L

総合スコア88

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問