Я использую devise, и я пытаюсь создать интерфейс CRUD. Так что я сделал, однако я не могу обновить или даже получить доступ к форме.Devise рельсы не могут обновляться с помощью 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 %>
Для одного это похоже на работу но он фактически не изменяет данные, это показывает сообщение, что оно было изменено.
Update
Вот моя регистрация контроллер:
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"=>"[email protected]",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"admin"=>"Technician"},
"commit"=>"Update User",
"id"=>"1"}
ли вы следить за процессом здесь: https://github.com/plataformatec/devise/wiki/How-To:-Manage-users-through -a-CRUD-интерфейс? Если вы не управляете параметрами password & password_confirmation надлежащим образом, процесс завершится неудачно. –
Как я могу создать usercontroller? Потому что это было бы единственное, чего я не делал. У меня есть регистрация изменений, как следует – Jseb
В вашем случае вы поместите его в MyUsersController (для которого вы уже разместили свои действия по созданию и обновлению) –