У меня возникла проблема с проверкой флажка наших условий обслуживания с помощью простой формы.

Модель пользователя

validates_acceptance_of :terms, :allow_nil => false, :message => :terms_not_accepted, :on => :create

Просмотр регистрации

= f.label :terms, "I agree to the #{link_to 'Terms of Service', "http://britevid.com/terms_of_service",:remote => true}.".html_safe, {class: "checkbox inline"}
= f.check_box :terms 
= f.button :submit, 'Sign up', :class => 'btn btn-success'

Контроллер приложений

def update_sanitized_params
  devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:first_name, :last_name, :company, :phone_number, :website, :content_description, :address, :city, :state, :zip_code, :country, :paypal_email, :time_zone, :email, :current_password, :password, :password_confirmation, :terms)}
devise_parameter_sanitizer.for(:account_update) {|u| u.permit(:first_name, :last_name, :company, :phone_number, :website, :content_description, :address, :city, :state, :zip_code, :country, :paypal_email, :time_zone, :email, :current_password, :password, :password_confirmation)}
end

Started POST "/users" for 127.0.0.1 at 2014-03-21 07:19:24 -0500
Processing by RegistrationsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "user"=>{"first_name"=>"jeff", "last_name"=>"smith", "email"=>"jeffsmith@lol.com", "company"=>"test", "phone_number"=>"453234562", "website"=>"", "content_description"=>"test", "address"=>"1st ave", "city"=>"big city", "state"=>"California", "country"=>"United States", "zip_code"=>"095610", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "terms"=>"0"}, "commit"=>"Sign up"}
   (0.2ms)  BEGIN
  User Exists (0.1ms)  SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY 'jeffsmith@lol.com' LIMIT 1
   (0.1ms)  ROLLBACK
  Rendered devise/registrations/new.html.haml within layouts/pages (46.2ms)
  Rendered layouts/shared/_external_header.html.haml (0.4ms)
Completed 200 OK in 157ms (Views: 67.7ms | ActiveRecord: 0.4ms)
2
kilomo 21 Мар 2014 в 18:41
В чем проблема? Журнал нам ничего не говорит. Предоставьте полный журнал, если есть ошибки, поделитесь им. Подробно объясните, в чем проблема.
 – 
Kirti Thorat
21 Мар 2014 в 18:52
Обновил исходный пост
 – 
kilomo
21 Мар 2014 в 18:58
Вы получили ошибку на странице? Почему не была создана запись пользователя?
 – 
Kirti Thorat
21 Мар 2014 в 19:01
Это сообщение об ошибке. Пожалуйста, ознакомьтесь с проблемами ниже:
 – 
kilomo
21 Мар 2014 в 19:13
Вы не видите список проблем? Убедитесь, что у вас есть <% = devise_error_messages! %> `в devise/registrations/new.html.erb, так что вы действительно видите список сообщений об ошибках в представлении. Что скажет вам, почему запись не была сохранена.
 – 
Kirti Thorat
21 Мар 2014 в 19:15

1 ответ

Лучший ответ

Вы настроили проверку на terms

validates_acceptance_of :terms, :allow_nil => false, :message => :terms_not_accepted, :on => :create

Поэтому обязательно установить флажок terms при создании нового User. Если вы не установите этот флажок, ваша проверка не удастся, и вы получите сообщение об ошибке. И, конечно же, запись пользователя не сохраняется.

Согласно журналу сервера, при отправке формы вы не установили флажок terms как "terms"=>"0" (в хеш-параметрах).

Убедитесь, что вы выбрали условия перед отправкой формы.

1
Kirti Thorat 21 Мар 2014 в 20:11