ユーザーがサインアップする際、私のレールアプリでDevise Gemを認証用に使用しようとしています。しかし、私はあなたのデータベースに作成された新しいユーザーを持っていないUserテーブルをチェックするために自分のレールコンソールに行くとき。私はサインインコントローラでDevise Registrationコントローラをオーバーライドしようとしましたが、運はありませんでした。登録コントローラは、createメソッドをデータベースに作成できるように設定しているようには見えません。誰かが私が間違っているところを助けてくれますか?ユーザーサインアップした後、サーバーのログに表示されて何Devise Gemを使用してユーザーとデータベースを作成する新しいユーザー登録を取得できません
:?
は、「GET /ユーザー/ sign_up UTF8 =%E2%9C%93 & authenticity_token = ruu1To891VYxDpsZlU4HjeAatrsX%2BQXcjj0WVpFexExAaEuKxQEDhrNl8GNqeu30lcaiwJFED7H40cmqXH%2FxpA%開始3D%3D &ユーザー%5Bemail%5D = fake.email%40gmail.com &ユーザー%5Bpassword%5D = [FILTERED] &コミット=サインアップ "for 1 at 2016-10-08 11:14:49 - 0500 Devits :: RegistrationsController#new(HTMLとして処理中) パラメータ:{"utf8" => "✓"、 "authenticity_tok "[email protected]"、 "パスワード" => "[FILTERED]"}、 "コミット"、 "ユーザー" => "ユーザー" => "ユーザー" => "ルック1T891VYxDpsZlU4HjeAatrsX + QXcjj0WVpFexExAaEuKxQEDhrNl8GNqeu30lcaiwJFED7H40cmqXH/xpA ==" =>レイアウト/アプリケーション(3.6ms)内の レンダリング工夫/登録/ new.html.erb} "サインアップ"
・サインアップページnew.html.erb:
<!DOCTYPE html>
<!--[if IE 8]> <html lang="en" class="ie8"> <![endif]-->
<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->
<!--[if !IE]><!--> <html lang="en"> <!--<![endif]-->
<head>
<title>Sign Up</title>
</head>
<body class="signup-page access-page has-full-screen-bg">
<div class="upper-wrapper">
<!-- Header -->
<!-- ******Signup Section****** -->
<section class="signup-section access-section section">
<div class="container">
<div class="row">
<div class="form-box col-md-8 col-sm-12 col-xs-12 col- md-offset-2 col-sm-offset-0 xs-offset-0">
<div class="form-box-inner">
<h2 class="title text-center">Sign up now</h2>
<p class="intro text-center">It only takes 3 minutes!</p>
<div class="row">
<div class="form-container col-md-5 col-sm-12 col-xs-12">
<form class="signup-form">
<%= form_for(resource, as: resource_name, url: user_registration_path(resource_name)) do |f| %> <%= devise_error_messages! %>
<div class="form-group email">
<!-- <label class="sr-only" for="signup-email">Your email</label>
<input id="signup-email" type="email" class="form-control login-email" placeholder="Your email"> -->
<%= f.label :email, class: 'sr-only' %>
<%= f.text_field :email, class: 'form-control login-email', placeholder: "Your email" %>
</div><!--//form-group-->
<div class="form-group password">
<%= f.label :password, class: 'sr-only' %>
<%= f.text_field :password, class: 'form-control login-password', placeholder: "Your password" %>
</div>
<!--//form-group-->
<div class="col-md-12 col-sm-12 col-xs-12 form-group">
<%= f.submit "Sign up", class: 'btn btn-block btn-cta-primary' %>
</div>
<p class="note">By signing up, you agree to our terms of services and privacy policy.</p>
<p class="lead">Already have an account? <%= link_to "Log in", user_session_path, class: "login-link" %>
</p>
<% end %>
</form>
</div><!--//form-container-->
<div class="social-btns col-md-5 col-sm-12 col-xs-12 col-md-offset-1 col-sm-offset-0 col-sm-offset-0">
<div class="divider"><span>Or</span></div>
<ul class="list-unstyled social-login">
<li><button class="twitter-btn btn" type="button"><i class="fa fa-twitter"></i>Sign up with Twitter</button></li>
<li><button class="facebook-btn btn" type="button"><i class="fa fa-facebook"></i>Sign up with Facebook</button></li>
<li><button class="github-btn btn" type="button"><i class="fa fa-github-alt"></i>Sign up with Github</button></li>
<li><button class="google-btn btn" type="button"><i class="fa fa-google-plus"></i>Sign up with Google</button></li>
</ul>
<p class="note">Don't worry, we won't post anything without your permission.</p>
</div><!--//social-login-->
</div><!--//row-->
</div><!--//form-box-inner-->
</div><!--//form-box-->
</div><!--//row-->
</div><!--//container-->
</section><!--//signup-section-->
</div><!--//upper-wrapper-->
<!--FOOTER -->
<!-- Javascript -->
<script>
/* ======= Fixed header when scrolled ======= */
$(window).on('scroll load', function()
{
if ($(window).scrollTop() > 0)
{
$('#header').removeClass('scrolled');
}
else
{
$('#header').addClass('scrolled');
}
});
</script>
工夫登録コントローラールートに:工夫登録コントローラを無効にする
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
user_registration POST /users(.:format) devise/registrations#create
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
試み:
<form class="signup-form">
<%= form_for... %>
それはだ、しかし:
class SignupController::RegistrationsController < Devise::RegistrationsController
def new
#@user = User.new
@resource_name = User.new
end
def create
@resource_name = User.new(user_params)
#if @user.save
if @resource_name.save
flash[:notice] = "Your user account has been created!"
create_session(@resource_name)
redirect_to '/'
else
flash[:error] = "Your user account was not created, please try again."
render :new
end
end
def user_params
params.require(:user, :email)
end
end
が、右あなたが工夫の上にbulldozeringされている方法には何も基本的にありません。デバイズコントローラをオーバーライドする理由と達成したいことを質問に含めることはできますか? – max
deviseの '@ resource_name'は基本的に新しいユーザインスタンスではなく、ユーザクラスの名前です。 '@ resource'は作成されているリソースです。そして、ビュー全体を変更したり、余分な属性を追加するだけで、コントローラ全体をオーバーライドするべきではありません。基本的に想像できるシナリオのための方法があるので、私はドキュメントとwikiを読むことから始めます。 – max
私はこのスタックのオーバーフローポストから得ました:http://stackoverflow.com/questions/13805695/bypassing-devise-gem-registration-form-to-create-a-new-user – SaintClaire33