0

デバイスを使用した小さなプロジェクトで強力なパラメーターの宝石を使用しています

コラムを追加User.rbしました。localeこれは私のcontrollers/users/registrations_controller.rbファイルです:

class Users::RegistrationsController < Devise::RegistrationsController
  def resource_params
    params.require(:user).permit(:username, :email, :password, :password_confirmation, :locale)
  end
  private :resource_params
  def create
   #add params[:locale] to resource.locale here
   super
  end
end

フォームから受け取ったパラメータは次のとおりです。

Parameters: {"authenticity_token"=>"ZyrtToHcwsX3zl2ive93cpYaom6HNGA/jnYcSg7pQUQ=", "user"=>{"username"=>"hyperrjas@hyperrjas.com", "email"=>"email@email.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create account", "locale"=>"es"}

user :locale columnパラメータに追加したいparams[:locale]

どうすればいいですか?

ありがとう!

4

2 に答える 2

0

createこのドキュメントのメソッドをオーバーライドする問題を修正しました:

https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb .

column or field localeを使用してモデル ユーザーに指定を追加する場合は、次のstrong parameters gemように追加できます。controllers/users/registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController

  def create
    build_resource
    resource.locale = set_locale #set_locale or where you have stored your own locale
    if resource.save
      if resource.active_for_authentication?
        set_flash_message :notice, :signed_up if is_navigational_format?
        sign_up(resource_name, resource)
        respond_with resource, :location => after_sign_up_path_for(resource)
      else
        set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
        expire_session_data_after_sign_in!
        respond_with resource, :location => after_inactive_sign_up_path_for(resource)
      end
    else
      clean_up_passwords resource
      respond_with resource
    end
  end

  def resource_params
    params.require(:user).permit(:username, :email, :password, :password_confirmation, :locale)
  end

  private :resource_params
end

よろしく!

于 2013-02-24T10:35:49.370 に答える