2

私はデバイスを使用しており、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"}
4

2 に答える 2