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

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

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

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

Q&A

解決済

1回答

2061閲覧

deviseとresourceの名前を同じにしてしまって大丈夫でしょうか

morimi714

総合スコア24

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/04/20 13:45

編集2019/04/21 11:43

rails初心者です

deviseで先生のログイン機能を作り、先生の詳細情報を編集できるようにresourceで作りました。
コントローラーで情報を送信できるようにしたところ、エラー文が出ることはなかったのですが、
データベースに保存されているのはサインイン時のメールアドレスとパスワードのみで、それ以外の情報はデータに入っていませんでした。
deviseとresourceの名前を同じteacherで統一してしまい、頭が混乱しています。
アドバイスいただけると幸いです。

routes.rb

devise_for :teachers resources :teachers

rake routes以下

Prefix Verb URI Pattern Controller#Action new_teacher_session GET /teachers/sign_in(.:format) devise/sessions#new teacher_session POST /teachers/sign_in(.:format) devise/sessions#create destroy_teacher_session DELETE /teachers/sign_out(.:format) devise/sessions#destroy new_teacher_password GET /teachers/password/new(.:format) devise/passwords#new edit_teacher_password GET /teachers/password/edit(.:format) devise/passwords#edit teacher_password PATCH /teachers/password(.:format) devise/passwords#update PUT /teachers/password(.:format) devise/passwords#update POST /teachers/password(.:format) devise/passwords#create cancel_teacher_registration GET /teachers/cancel(.:format) devise/registrations#cancel new_teacher_registration GET /teachers/sign_up(.:format) devise/registrations#new edit_teacher_registration GET /teachers/edit(.:format) devise/registrations#edit teacher_registration PATCH /teachers(.:format) devise/registrations#update PUT /teachers(.:format) devise/registrations#update DELETE /teachers(.:format) devise/registrations#destroy POST /teachers(.:format) devise/registrations#create teachers GET /teachers(.:format) teachers#index POST /teachers(.:format) teachers#create new_teacher GET /teachers/new(.:format) teachers#new edit_teacher GET /teachers/:id/edit(.:format) teachers#edit teacher GET /teachers/:id(.:format) teachers#show PATCH /teachers/:id(.:format) teachers#update PUT /teachers/:id(.:format) teachers#update DELETE /teachers/:id(.:format) teachers#destroy
class TeachersController < ApplicationController def index end def create @teacher = Teacher.new(teacher_params) @teacher.save redirect_to edit_teacher_path #DBにデータが入らん end def new @teacher = Teacher.new end def edit @teacher = Teacher.find(params[:id]) end def show @teacher = Teacher.find(params[:id]) end def update @teacher = Teacher.find(params[:id]) @teacher.update(teacher_params) redirect_to teacher_path end #ストロングパラメーターの設定 private def teacher_params params.require(:teacher).permit(:img,:firstname,:lastname,:university,:sex,:wage,:trialwage,:prefecture,:region,:trial,:online,:profile,:message) end end

その他 teacher.rb

追記
teacher/new.html.erb

<div class="teacher_information"> <%= form_for(@teacher) do |f| %> <h4>基本情報の編集</h4> <tr> <td>プロフィール画像の設定</td> <td><%= f.file_field :img %></td> </tr> <tr> <td>イニシャル(名前)</td> <td><%= f.text_field :firstname, maxlength:1 %></td> </tr> <tr> <td>イニシャル(名字)</td> <td><%= f.text_field :lastname, maxlength:1 %></td> </tr> <tr> <td>性別</td> <%= f.radio_button :sex, "男性" %> <%= f.label :sex, "男性" %> <%= f.radio_button :sex, "女性" %> <%= f.label :sex, "女性" %> </tr> <tr> <td>大学</td> <td><%= f.text_field :university %></td> </tr> <tr> <td>授業料金</td> <td><%= f.number_field :wage %>円/時間</td> <td><%= f.number_field :trialwage %>円/時間(体験授業)</td> </tr> <tr> <td>指導可能時間</td> <table> <tr> <td>曜日/時間</td> <td>月曜</td> <td>火曜</td> <td>水曜</td> <td>木曜</td> <td>金曜</td> <td>土曜</td> <td>日曜</td> </tr> <tr> <td>午前中</td> <td><%= check_box 'weeks','monday', {}, true, false %></td> <td><%= check_box 'weeks','tuesday', {}, true, false %></td> <td><%= check_box 'weeks','wednesday', {}, true, false %></td> <td><%= check_box 'weeks','thursday', {}, true, false %></td> <td><%= check_box 'weeks','friday', {}, true, false %></td> <td><%= check_box 'weeks','saturday', {}, true, false %></td> <td><%= check_box 'weeks','sunday', {}, true, false %></td> </tr> <tr> <td>13:00~16:00</td> <td><%= check_box 'weeks','monday', {}, true, false %></td> <td><%= check_box 'weeks','tuesday', {}, true, false %></td> <td><%= check_box 'weeks','wednesday', {}, true, false %></td> <td><%= check_box 'weeks','thursday', {}, true, false %></td> <td><%= check_box 'weeks','friday', {}, true, false %></td> <td><%= check_box 'weeks','saturday', {}, true, false %></td> <td><%= check_box 'weeks','sunday', {}, true, false %></td> </tr> <tr> <td>16:00~19:00</td> <td><%= check_box 'weeks','monday', {}, true, false %></td> <td><%= check_box 'weeks','tuesday', {}, true, false %></td> <td><%= check_box 'weeks','wednesday', {}, true, false %></td> <td><%= check_box 'weeks','thursday', {}, true, false %></td> <td><%= check_box 'weeks','friday', {}, true, false %></td> <td><%= check_box 'weeks','saturday', {}, true, false %></td> <td><%= check_box 'weeks','sunday', {}, true, false %></td> </tr> <tr> <td>19:00~22:00</td> <td><%= check_box 'weeks','monday', {}, true, false %></td> <td><%= check_box 'weeks','tuesday', {}, true, false %></td> <td><%= check_box 'weeks','wednesday', {}, true, false %></td> <td><%= check_box 'weeks','thursday', {}, true, false %></td> <td><%= check_box 'weeks','friday', {}, true, false %></td> <td><%= check_box 'weeks','saturday', {}, true, false %></td> <td><%= check_box 'weeks','sunday', {}, true, false %></td> </tr> </table> <tr> <td>都道府県選択</td> <td><%= f.collection_select :prefecture, Prefecture.all, :id, :name %></td> </tr> <tr> <td>授業可能地域</td> <td><%= f.text_field :region %></td> </tr> <tr> <td>体験授業に関して</td> <td><%= f.text_area :trial %></td> </tr> <tr> <td>オンライン授業に関して</td> <td><%= f.text_area :online %></td> </tr> <tr> <td>プロフィール・経歴</td> <td><%= f.text_area :profile %></td> </tr> <tr> <td>メッセージ</td> <td><%= f.text_area :message %></td> </tr> <%= f.submit "保存する" %> <% end %> </div>

application.html.erb ここから編集に飛べるようにしています

<li><a href="/teachers/new">基本情報の編集</a></a></li>

application.controller.rb

class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:teacher, keys: [:img,:firstname,:lastname,:university,:sex,:wage,:trialwage,:prefecture,:region,:trial,:online,:profile,:message]) end end

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

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

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

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

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

siruku6

2019/04/21 01:16

今回どうしてデータが登録されなかったのかを知るためには、実際に入力に使ったフォームのviewファイルも掲載する必要がありそうです。 deviseとresourceの名前については、動作させる上では問題ありません。 共同開発者だったとしたら同じ名前にしないように要望しますが、単独開発であれば周りに迷惑をかけることもないので構わないと思います。 ちなみにですが、 deviseがデフォルトで生成しない情報をDBに登録したい場合は、以下の記事のような手順が参考になると思います。 [初めてのdevise ② -- カラムを追加してみる -- ~ やってみようカスマイズ! ~](https://qiita.com/uloruson/items/40154b4be19d1ac900f3)
morimi714

2019/04/21 10:37

ご指摘ありがとうございます!ただいま、情報を追記したので、見ていただけると嬉しいです。
siruku6

2019/04/26 11:18

一見して怪しいところを見つけることができませんでした。 コチラの記事で紹介されているgemを使っておかしなところを探っていくのがよさそうに感じました。 https://qiita.com/ryosuketter/items/da3a38d0d41c7e20a2d6 ブレークポイントをrubyコードの中に仕込むことができるgemですので、どの時点で処理がおかしくなっているのかを見つけやすくなります。
morimi714

2019/04/26 14:16

ありがとうございます。結局、deviseは便利な一方でカスタマイズすることが難しく、一から作り直してうまくいきました!
guest

回答1

0

ベストアンサー

restfulに考えると良いと思います。
また、混乱するってことは、実装上良くないと思います。

自分でわかりやすくするのが、一番良いです。その後は他の人にもわかりやすいとか、読みやすいとレベルアップするのがベストだと思います。

deviseとresourceの名前を同じteacherで統一してしまい、頭が混乱しています。

同じにしても問題ありません。

こんな感じすればわかりやすいかもですね

routes.rb

ruby

1devise_for :teachers 2 3resources :teachers, only: [:index, :show] do # 表示のみ 4 # ↓ resources でなく resource 5 resource :profile # teacher/new.html.erb で表示している内容のリソースを追加 6end

teachersというリソースに違和感がありますが。

おそらくですが、usersで実装しておいたほうがあとあと楽になる気がします。
↑ なんとなくですが。

投稿2019/05/10 07:38

odyu

総合スコア548

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問