2

私はこのフォームを部分的に持っています:

.row
    .span6
        .well
            %h2 Sign in
            = simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => 'form-vertical' }) do |f|
                = f.input :email, :autofocus => true, :wrapper => :bootstrap_placeholder
                = f.input :password, :wrapper => :bootstrap_placeholder
                = f.input :remember_me, :as => :boolean if devise_mapping.rememberable?
                = f.button :submit, "Sign in", :class => 'btn-primary'
            = render "devise/shared/links"



    .span6
        .well
            %h2 Sign up
            = simple_form_for(resource, :as => resource_name, :url => regi stration_path(resource_name), :html => {:class => 'form-vertical' }) do |f|
                = f.error_notification
                = display_base_errors resource
                = f.input :name, :autofocus => true
                = f.input :email, :required => true
                = f.input :password, :required => true
                = f.input :password_confirmation, :required => true
                = f.button :submit, 'Sign up', :class => 'btn-primary'
            = render "devise/shared/links"

正常に動作しますが、データを入力せずにユーザーを登録したい場合、検証に問題があります...エラーメッセージが表示されますが、サインインフォームのユーザー名とパスワードのフィールドも強調表示されます..方法はありますか?この検証の混乱を避けるには?

4

1 に答える 1

1

resource両方のフォームで同じであるため、エラーが両方に表示されるのは正常です。それを防ぐには、使用するリソースを分離する必要があります。このようなことを試してください。

# registrations_controller.rb
def create
  super
  @registration_resource = resource
end

# sessions_controller.rb
def create
  super
  @login_resource = resource
end

# _form.html.slim
# sign up
simple_form_for(@registration_resource || resource_name.to_s.capitalize.constantize.new, :as => resource_name, :url => regi stration_path(resource_name), :html => {:class => 'form-vertical' }) do |f|

# sign in
simple_form_for(@login_resource || resource_name.to_s.capitalize.constantize.new, :as => resource_name, :url => regi stration_path(resource_name), :html => {:class => 'form-vertical' }) do |f|
于 2012-12-12T13:43:47.080 に答える