を呼び出し、それについてのブログを投稿のform_forその後
def update_discovery
@user = User.find(current_user.id)
if @user.update(user_params2)
# Sign in the user by passing validation in case their password changed
sign_in @user, :bypass => true
redirect_to root_path
else
render "edit"
end
end
def user_params2
# NOTE: Using `strong_parameters` gem
params.require(:user).permit(:discovery, :male, :female, :min_age, :max_age)
end
controller-私のユーザー私の見解
routes-
devise_for :users, controllers: {registrations: 'users/registrations'} as :user do
end
root 'home#home'
get 'users/discovery_settings' => 'users#discovery_settings'
patch 'users/discovery_settings/update' => 'users#update_discovery'
ここに私の答えがありました:
私がカスタマイズしたすべての問題の中で、これはおそらく私が把握するのに最も長い時間を要したものです。あなたは間違ってこれをやってから受信する一般的なエラーは次のとおりです。
paramが存在しないか、値が空である:ユーザー
第一ステップは、本質的にそれをオーバーライド(工夫コントローラを継承するコントローラを作成することです)。これはコントローラ/ユーザの内部に入り、registration_controller.rbと呼ばれるべきです。
class Users::RegistrationsController < Devise::RegistrationsController
before_filter :configure_permitted_parameters
def NAMEOFVIEW
@user = current_user
if @user
render :NAMEOFVIEW
else
render file: 'public/404', status: 404, formats: [:html]
end
end
[表示] - 二次顧客の編集のために次のコードを挿入しても、あなたのデータベースにあなたが作る任意のカスタムパラメータをサニタイズする必要があります
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:username, :email, :password, :name, :user_age, :user_gender) }
devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password, :name, :user_age, :user_gender, :user_bio) }
end
、最後にパスワードなしで更新を許可ルートの下
protected
def update_resource(resource, params)
resource.update_without_password(params)
end
(デフォルトでは、この力を考案):
Rails.application.routes.draw do
devise_for :users, controllers: {registrations: 'users/registrations'}
as :user do
match 'users/NAMEOFVIEWHERE' => 'users/registrations#NAMEOFVIEWHERE', :via => [:get], :as => 'NAMEOFVIEWHERE'
その後、以下の例のform_forのform_forやform_tagを使用して行うことができ、あなたのビューでの最終的な変更、:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, class: " html classes here" }) do |f| %>
<div class="field">
<%= f.label :Bio %><br />
<%= f.text_area :user_bio, autocomplete: "off", class: "optional html class here", rows: 3, cols: 20, name: "description", placeholder: "About" %>
</div>
<div class="optional button class here">
<button type="submit">Save</button>
</div>
<% end %>
は、今すぐあなたのレールのサーバーを再起動し、あなたの指を交差さ!