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

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

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

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Q&A

解決済

2回答

903閲覧

<%= form_with model: , url:, method: "patch" , local: do |f|>によってDBにデータを送り込めるようにしたいです!!

jack_kanzaki

総合スコア106

Ruby on Rails 5

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

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

0グッド

0クリップ

投稿2020/02/12 18:00

編集2020/02/12 18:00

環境

% rails -v Rails 5.2.4.1 % ruby -v ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin19]

質問

method: "patch"を使って、DBの内容を書き換えられるようにしたいです!

config/routes.rb
Rails.application.routes.draw do devise_for :users resources :users, only: [:show, :edit, :update] end
app/controller/users_controller.rb
class UsersController < ApplicationController def edit @user = User.find(params[:id]) end def update user = User.find(params[:id]) if user.id == current_user.id user.update(user_params) end end private def user_params params.permit(:name) end end
app/views/users/edit.html.erb
<%= form_with model: @user, url: "/users/#{@user.id}", method: "patch", local: true do |f| %> <%= f.text_field :name, placeholder: "名前", autofocus: "true"%></br> <%= f.submit "送信" %> <% end %>
app/models/user.rb
class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable end

よろしくお願いします!

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

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

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

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

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

guest

回答2

0

rb

1ActionController::Parameters.new(user: { name: 'hoge' }).permit(:name) 2# ActionController::UnpermittedParameters: found unpermitted parameter: :user

となるはずなので、そもそもuser.id == current_user.idfalseなのでは?
もしuser.id == current_user.idtrueで本当にエラーも出ていないのであれば
UsersController#updateでリダイレクトしてないだけで、データの送信自体はされているはずです。

投稿2020/02/13 02:42

Mugheart

総合スコア2349

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

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

winterboum

2020/02/13 02:50

それっぽいですね
jack_kanzaki

2020/02/13 03:49

あとでもう一度確認してみます!
jack_kanzaki

2020/02/13 10:48

def update user = User.find(params[:id]) user.update(user_params) end
jack_kanzaki

2020/02/13 10:49

app/controller/users_controller.rb
jack_kanzaki

2020/02/13 10:49

コントローラをこのように変えてみましたが、うまく行きませんでした。
jack_kanzaki

2020/02/13 10:51

自分でももう少し原因を探ってみます
jack_kanzaki

2020/02/13 10:56

すみません。 下記の方の書き方をしたところ、 うまく行っておりました。
jack_kanzaki

2020/02/13 10:57

大切なお時間を割いていただき、本当にありがとうございます。 今後ともよろしくお願いします。
guest

0

ベストアンサー

どうなってしまうのか、を書かないと正しい回答が得られないかも。

params.permit(:name)params.require(:user).permit(:name)

かも。
ダメなときはエラーメッセージや現象の説明を

投稿2020/02/12 21:34

編集2020/02/12 21:35
winterboum

総合スコア23401

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

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

jack_kanzaki

2020/02/13 02:24

ご回答ありがとうございます。 viewではしっかりと表示されるものの、 肝心のpatchがなされていない状態になっております。 エラーコードも特に出ておりません。
jack_kanzaki

2020/02/13 02:25

引き続き、お願いします!
jack_kanzaki

2020/02/13 10:58

今朝このような書き方をしたところ、 うまく行っていないと思っていたのですが、 もう一度、改変したところ成功しました。
jack_kanzaki

2020/02/13 10:58

ご回答ありがとうございます。
jack_kanzaki

2020/02/13 10:59

今回に関してはエラーメッセージが表示されなかったので、 わかりにくい質問になってしまっていたかもしれません。 今後改善していきたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問