3

私はDeviseへのユーザー登録で2つのことをしています。

  1. 2 段階の確認- ユーザーが行う必要があるのは、最初に電子メール アドレスを入力することだけです。
  2. 登録/新規フォームを自分のwelcome#indexビューに移動しました。

paramsメールアドレスを正しく入力しても、ログのハッシュに含まれていることがわかります。

Started POST "/users" for 127.0.0.1 at 2012-06-05 20:35:43 -0500
Processing by Devise::RegistrationsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"0qWg/RxG+XyDqdsdadww=", "email"=>"abc@test.com", "commit"=>"Sign Me Up!"}
   (0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT 1 FROM "users" WHERE LOWER("users"."email") = LOWER('') LIMIT 1
   (0.1ms)  rollback transaction
  Rendered devise/registrations/new.html.erb within layouts/application (9.2ms)
Completed 200 OK in 65ms (Views: 54.9ms | ActiveRecord: 0.0ms)

これは私が得ているエラーです:

1 error prohibited this user from being saved:
Email can't be blank

私の最初の登録フォームは次のようになります。

<%= form_for(resource, :as => resource_name, :class => "send-with-ajax", :url => user_registration_path(resource)) do |f| %>
            <%= devise_error_messages! %>
              <%= f.email_field :email, :name => :email, :id => "form-email", :placeholder => "your-email@address.com", :input_html => {:autofocus => true} %>
              <%= f.submit :label => "Submit", :value => "Sign Me Up!"  %>
          <% end %>

ありがとう。

4

2 に答える 2

4

考えられる説明:

あなたの電子メールフィールドはparamsとしてハッシュされてparams[:email]いますが、コントローラーの作成アクションはおそらくそれを期待していparams[:resource][:email]ます。割り当てを削除すると:name => :email、電子メールは に戻りparams[:resource][:email]ます。

このハッシュを投稿しました:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"0qWg/RxG+XyDqdsdadww=", "email"=>"abc@test.com", "commit"=>"Sign Me Up!"}

動作時の見た目の違いがわかりますか?

于 2012-06-06T04:01:33.210 に答える
1

:nameメール フィールドのフォーム ヘルパーの属性が問題を引き起こしているようです。

これは元のフィールドでした:

<%= f.email_field :email, :name => :email, :id => "form-email", :placeholder => "your-email@address.com", :input_html => {:autofocus => true} %>

私はそれを次のように変更しました:

<%= f.email_field :email, :id => "form-email", :placeholder => "your-email@address.com", :input_html => {:autofocus => true} %>

それはそれを修正しましたが、理由はわかりません。

于 2012-06-06T03:55:05.983 に答える