ユーザーの編集機能をつけようとしたところ、タイトルのようなエラーが出てしまいます。
今回作ってるユーザーにはadminとcrewの二種類があるので、usersのルーティングをnamespaceで分けています。
adminがcrewのeditをできて、crewはedit操作はできないようにしたいです。
__
route.rb__
Rails.application.routes.draw do namespace :admin do root "sessions#new" resources :users resources :sessions, only: %i(new create destroy) end namespace :crew do root "sessions#new" resources :users resources :sessions, only: %i(new create destroy) end root "crew/sessions#new" end
__Crew::UsersController
__
一部抜粋
def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) if current_user[:usertype] == "admin" if @user.update(user_params) redirect_to edit_crew_user_path else render :edit end end end
view/crew/users/edit.html.haml
%h2 ユーザー情報変更 = form_for @user, url: edit_crew_user_path do |f| %div{style:"padding-bottom:10px;"} .field = f.label :realname, "名前 " = f.text_field :realname %div{style:"padding-bottom:10px;"} .field = f.label :username, "ユーザーID " = f.text_field :username %div{style:"padding-bottom:10px;"} .field = f.label :password, "新しいパスワード " = f.password_field :password %div{style:"padding-bottom:10px;"} .field = f.label :password_confirmation, "パスワード確認 " = f.password_field :password_confirmation %div{style:"padding-bottom:10px;"} .field = f.label :usertype, "ユーザー区分" = f.select :usertype, User.usertypes_i18n.keys.map {|k| [User.usertypes_i18n[k], k]} %div{style:"padding-bottom:10px;"} .field = f.label :office, "所属事業所" = f.select :office, User.offices_i18n.keys.map {|k| [User.offices_i18n[k], k]} .actions = f.submit "変更を完了する" %p or = link_to "ログイン", new_crew_session_path
adminのeditのcontrollerもviewもありますが、文言とパスが変わるだけなので割愛します。
この状態で、変更を完了するボタンを押すとタイトルのようなエラーが出ます。
おそらく、viewのform_forのURLをeditに指定をしているから、updateアクションを通らない?からだと思うんですが、これをどう解決したらいいのかわかりません....。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。