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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

2376閲覧

【Ruby on Rails + Devise + 項目追加】登録できません

pecchan

総合スコア555

Devise

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

Ruby on Rails

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

0グッド

0クリップ

投稿2017/06/23 01:11

編集2017/06/23 01:12

Deivseを導入し、ログイン・ログアウトは出来るようになりました。

対象モデルは社員(Employee)です。

次に、下記を参考に「社員コード」と「社員名」を追加しました。
Rails Deviseでサインアップ用のユーザー登録フォームに、独自の入力フィールドを追加する

元々、社員マスタは一式あったのですが、あとからDevise機能を追加するとうまく行かないことが多いようなので、
モデルは1から作り直しました(rails g devise Employeeしました)。
それに対し、マイグレーションで「社員コード」と「社員名」を追加したわけです。
ただし、viewだけは元々あったやつを流用しました。

これで登録画面から登録すると、TOP画面に遷移します。
登録は出来ていません。
エラーログも出力されていません。

社員マスタの登録画面から登録を行い、社員一覧に遷移したいです。

なお、Deviseセットアップ時に自動で作られる
app/views/devise の一式はそのまま手付かずの状態です。

どこが間違っているでしょうか?
分かる方教えてください。

どうぞ宜しくお願い致します。

【モデル】
employee

ruby

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

【コントローラ】

ruby

1class ApplicationController < ActionController::Base 2 3 before_action :authenticate_employee! 4 before_action :configure_permitted_parameters, if: :devise_controller? 5 6 7 protect_from_forgery with: :exception 8 9 protected 10 def configure_permitted_parameters 11 devise_parameter_sanitizer.permit(:sign_up, keys: [:emp_code,:emp_name]) 12 end 13 14end 15 16

【ビュー】

_form.html.erb

ruby

1 2<%= render "shared/errors", obj: @employee %> 3 4<table class="table "> 5 <tr> 6 <th><%= form.label :emp_code, "社員コード" %></th> 7 <td><%= form.text_field :emp_code %></td> 8 </tr> 9 10 <tr> 11 <th><%= form.label :emp_name, "社員名" %></th> 12 <td><%= form.text_field :emp_name %></td> 13 </tr> 14 15 <tr> 16 <th><%= form.label :email , "メール" %></th> 17 <td><%= form.text_field :email %></td> 18 </tr> 19 20 <tr> 21 <th><%= form.label :password , "パスワード" %></th> 22 <td><%= form.text_field :password %></td> 23 </tr> 24 25 <tr> 26 <th><%= form.label :password_confirmation , "パスワード確認用" %></th> 27 <td><%= form.text_field :password_confirmation %></td> 28 </tr> 29 30 <tr> 31 <th><%= form.label :retire_date, "退職日" %></th> 32 <td><%= form.text_field :retire_date, class: 'date-picker' %></td> 33 </tr> 34 35</table> 36 37

new.html.erb

ruby

1 2<div class="container-fluid"> 3 <div class="row"> 4 <div class="col-xs-4 col-xs-offset-2" > 5 <h1 class="page-title">社員の新規登録</h1> 6 </div> 7 8 <div class="col-xs-8 col-xs-offset-2" > 9 <div class="contents-box"> 10 <%= form_for @employee do |form| %> 11 <%= render 'form', form: form %> 12 <p><%= form.submit "登録", class: "btn btn-primary" %></p> 13 <% end %> 14 </div> 15 16 17 18 19 </div> 20 </div> 21</div>

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

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

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

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

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

guest

回答1

0

ベストアンサー

devise4ですよね。
その場合
app/views/devise の一式の方を弄りましょう。
device3まではベースとなるmodelのviewをいじっていましたが
devise4からはdeviseがdeviceされているモデルを解析して。
app/views/deviseに導きます。
この中のnew.html.erb等をいじってください。

ruby

1 <tr> 2 <th><%= f.label :emp_code, "社員コード" %></th> 3 <td><%= f.text_field :emp_code %></td> 4 </tr> 5 6 <tr> 7 <th><%= f.label :emp_name, "社員名" %></th> 8 <td><%= f.text_field :emp_name %></td> 9 </tr>


app/views/devise/resistrator/new.html.erb
等に追加

投稿2017/06/23 06:27

編集2017/06/23 08:18
moke

総合スコア2241

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

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

pecchan

2017/06/23 08:10

moke様 deviseのバージョン記載漏れてました。すいません!! はいdevise4です。 なるほど。 app/views/devise の一式の方が対象になるわけですね!! 出先につき、ひとまずお礼だけですが有難う御座います!
moke

2017/06/23 08:23

現在、rails5.1.1と格闘してまして、terateil活動がおろそかになってますorz 一応、もしかしたらEmployeesConttollerと競合するかもしれないので うまくいかなかったら、一旦employees_conttoller.rbをどっかに移動してから 試してみてください。
pecchan

2017/06/23 22:59

moke様 5.1.1格闘中だったのですね。 お忙しいところすみません。 有難う御座いました。 EmployeesConttollerと衝突もなく無事に登録できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問