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

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

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

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

Ruby

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

Q&A

解決済

3回答

3537閲覧

rails deviseに登録したユーザー編集機能 わからん

kazuyakazuya

総合スコア193

Devise

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

Ruby

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

0グッド

1クリップ

投稿2019/06/14 05:38

編集2019/06/14 06:34

長文

deviseによりユーザーログイン機能は実装できたのですが
その登録したユーザーの編集機能の実装方法がわかりません。
(email,passwordなどなど)

まずは仮定

ruby

1#コマンド 2rails new sample

↓(トップ画面作成のため ・・・念のため)

ruby

1#コマンド 2rails g controller top

ruby

1 #routes.rbファイル 2 3root "top#index"

ruby

1def index 2 3end

↓(ここからdevise実装)

ruby

1#gemファイル 2gem 'devise'

ruby

1#コマンド 2bundle install

ruby

1#コマンド 2rails g devise:install

ruby

1#コマンド 2rails g devise user

ruby

1#コマンド 2rails db:migrate

ruby

1#コマンド 2rails g devise:views

見にくいですが・・・
サインアップした時の情報を編集できるようにしたいのです。
(デフォルトと仮定 なので email,password)


リンク内容
一応やってみたことも載せます。(もちろん失敗)
上記のリンクを参考にしました。

ruby

1#コマンド 2rails g devise:controllers users

ruby

1devise_for :users, :controllers => { 2 :registrations => 'users/registrations', 3 :sessions => 'users/sessions' 4}

これでコントローラーをカスタマイズできるようになった
(ここは問題なく作動を確認)

うーん・・・
うまく伝えづらいのですが

ruby

1 <%= form_for まずここに何を入れるかが・・・ do |f| %> 2 <%= f.text_field :email %> 3 <%= f.text_field :password %> 4 <%= f.submit %> 5 <% end %> 6#↓サインアップ時のform_forはこうなっていた 7<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>

いろいろと検索してお目当ての記事を探したのですが
無理だったのでお願いします

メインの質問

form_for で何を指定すればいいのですか?
また、これは最初から定義しているわけではないから
自分で作る必要があるのですか?

ruby

1#コマンド 2rails routes

これで調べたのですがやはりわかりません

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

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

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

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

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

guest

回答3

0

そもそも初めからdeviseに編集機能はあったようです。
users/edit でいけました・・・

投稿2019/06/15 07:14

kazuyakazuya

総合スコア193

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

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

0

そもそもdeviseには初めから編集機能がありました・・・
users/edit でいけます

投稿2019/06/15 07:13

kazuyakazuya

総合スコア193

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

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

0

ベストアンサー

ドキュメントには以下のように書かれてあります。

ruby

1form_for(モデルオブジェクト [, オプション]) do |f| 2end

ですので第一引数にモデルのインスタンスを渡し、必要であればオプション引数も渡します。

投稿2019/06/14 06:34

Mugheart

総合スコア2340

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

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

kazuyakazuya

2019/06/14 06:40

ありがとうございます そもそもドキュメントの存在を初めて知ったのですが http://railsdoc.com/etc どこにdeviseの内容がありましたか?
Mugheart

2019/06/14 06:43

ちなみにですがform_forは現在非推奨なので可能であれば 代わりにform_withを使うことをお勧めしておきます。
kazuyakazuya

2019/06/14 07:04

ありがとうございます deviseだからなのかできなかったです・・・ @user = User.find(1) <%= form_for(@user) do |f| %> <%= f.text_field :password %> <% end %> エラーこそならないのですが・・・
Mugheart

2019/06/14 07:20

まず、どこの画面の話でしょうか...? サインアップやログイン画面のフォームでしたら元々の form_for(resource, as: resource_name, url: ... ) do |f| を使えばいいような気がしますが...。
kazuyakazuya

2019/06/14 07:49

topコントローラーのindexアクションです。(ここでは) つまり僕がしたいのは 登録したパスワードを変更できる機能を実装したいということです。 もしかして誤解をうんでいましたでしょうか?
Mugheart

2019/06/14 08:22

今更なんですけどあんまりdeviseを使ってないので...。 https://tnakamura.hatenablog.com/entry/2014/09/04/124348 によるとcurrent_user.update_with_password(...)でパスワードを変更できるみたいなので form_for ではなく form_with もしくは form_tag を使ってパスワード情報を送信し、 コントローラ側でパスワードの変更 + 再ログインさせることになると思います。 参考にしてみてください。
kazuyakazuya

2019/06/14 08:58

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問