私はデバイスを使用しており、CRUD インターフェイスを作成しようとしています。そうしましたが、フォームを更新したり、フォームにアクセスしたりすることさえできないようです。
ここに私のルートがあります。
devise_for :users, :controllers => { :registrations => "registrations" }
resources :myusers
ここで myuser コントローラーの編集、更新
# POST /myusers
# POST /myusers.json
def create
@myuser = User.new(params[:myuser])
respond_to do |format|
if @myuser.save
format.html { redirect_to @myuser, notice: 'User was successfully created.' }
format.json { render json: @myuser, status: :created, location: @myuser }
else
format.html { render action: "new" }
format.json { render json: @myuser.errors, status: :unprocessable_entity }
end
end
end
# PUT /myusers/1
# PUT /myusers/1.json
def update
@myuser = User.find(params[:id])
respond_to do |format|
if @myuser.update_attributes(params[:myuser])
format.html { redirect_to root_url, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @myuser.errors, status: :unprocessable_entity }
end
end
end
ここで私の編集フォームを試してください1
<%= form_for @myuser, url: myuser_path(@myuser), html: { method: :put} do |f| %>
...
<% end %>
トライ2はこれ
<%= form_for(@myuser) do |f| %>
...
<% end %>
1つは機能しているように見えますが、実際にはデータを変更せず、変更されたというメッセージを表示します。
アップデート
ここで私の登録コントローラー:
class RegistrationsController < Devise::RegistrationsController
def update
# required for settings form to submit when password is left blank
if params[:user][:password].blank?
params[:user].delete("password")
params[:user].delete("password_confirmation")
end
@user = User.find(current_user.id)
if @user.update_attributes(params[:user])
set_flash_message :notice, :updated
# Sign in the user bypassing validation in case his password changed
sign_in @user, :bypass => true
redirect_to after_update_path_for(@user)
else
render "edit"
end
end
end
登録ヘルパーも持っています
module RegistrationsHelper
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
これは私のパラメータです
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"Fx7uCaiLyyT3wwnL9GrZ8671oJVeuYxodN+vXqpbqIE=",
"user"=>{"username"=>"jf_dufour",
"first"=>"Jean-Sebastien",
"last"=>"Dufour",
"phone"=>"...",
"email"=>"jf_dufour@....ca",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"admin"=>"Technician"},
"commit"=>"Update User",
"id"=>"1"}