में काम करता है यह मेरा User
मॉडल है:क्लाइंट साइड सत्यापन उत्पादन में काम नहीं करता है, लेकिन विकास
class User < ActiveRecord::Base
rolify
devise :database_authenticatable, :registerable, :token_authenticatable, :confirmable, :timeoutable,
:recoverable, :rememberable, :trackable, :validatable,
:email_regexp => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :confirmed_at, :confirmation_token
validates_uniqueness_of :email, :case_sensitive => false
validates_confirmation_of :password
end
Gemfile:
gem 'client_side_validations'
प्रपत्र:
<%= form_for(resource, :as => resource_name, :class => "send-with-ajax", :url => user_registration_path(resource), :validate => true, :html => { :id => 'user_new' }) do |f| %>
<%= f.text_field :email,:placeholder => "[email protected]", :input_html => {:autofocus => true}, :validate => true %>
<%= f.submit :label => "Submit", :value => "Sign Me Up!" %>
<div class="ajax-response"><%= devise_error_messages! %></div>
<% end %>
जब आप फ़ील्ड से बाहर टैब करते हैं तो यह काम करना चाहिए, यहां इसका एक स्क्रीनशॉट है स्थानीय स्तर पर काम कर रहे:
लेकिन जब मैं उत्पादन में यह करना, यह सब पर काम नहीं करता है और मैं लॉग फ़ाइल में या जे एस कंसोल में किसी भी त्रुटि नहीं दिख रहा।
संपादित करें 1:
मान्यता संदेशों दिखाई नहीं दे रहे।
Heroku लॉग में, मैं यह देख जब भी मैं एक 'वैध' ईमेल पता का प्रयास करें:
2012-06-10T18:44:55+00:00 app[web.1]: Started GET "/validators/uniqueness?case_sensitive=false&user%5Bemail%5D=abc%40tell.com" for xx.xxx.xx.x2 at 2012-06-10 18:44:55 +0000
2012-06-10T18:44:55+00:00 heroku[router]: GET myapp.heroku.com/validators/uniqueness?case_sensitive=false&user%5Bemail%5D=abc%40tell.com dyno=web.1 queue=0 wait=0ms service=221ms status=404 bytes=4
लेकिन यह मुझे मेरे पृष्ठ पर एक संदेश प्रदर्शित नहीं करता है जैसे कि यह स्थानीय स्तर पर करता है।
साथ ही, केवल एक बार जब मैं देखता हूं कि लॉग में HTTP अनुरोध तब होता है जब मैं एक स्ट्रिंग का प्रयास करता हूं जिसमें 'वैध' ईमेल संरचना होती है - जैसे [email protected]
। लेकिन अगर मैं abc
जैसे कुछ कोशिश करता हूं तो यह मुझे वह संदेश नहीं देता है जो मुझे उम्मीद है - invalid address
- न ही लॉग कुछ भी दिखाता है।
संपादित करें 2:
मैं production mode
में अपने स्थानीय सर्वर चल रहा की कोशिश की और मैं Heroku पर के रूप में ही इस मुद्दे को देख रहा हूँ। तो ऐसा लगता है कि इस मुद्दे को हेरोकू के साथ कुछ भी नहीं करना चाहिए - बल्कि उत्पादन।
<form accept-charset="UTF-8" action="/users" class="formtastic user" data-validate="true" id="user_new" method="post" novalidate="novalidate"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="kQid^%&^%jhgdsjhgfxmw4=" />
<input data-validate="true" id="user_email" input_html="{:autofocus=>true}" name="user[email]" placeholder="[email protected]" size="30" type="text" />
<input label="Submit" name="commit" type="submit" value="Sign Me Up!" />
</form><script>window['user_new'] = {"type":"Formtastic::FormBuilder","inline_error_class":"inline-errors","validators":{"user[email]":{"presence":{"message":"can't be blank"},"uniqueness":{"message":"has already been taken","case_sensitive":false},"format":{"message":"is invalid","with":/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,"allow_blank":true}}}};</script> </div>
संपादित करें 3::
यह कैसे मेरे application.js लग रहा है:
यह उत्पादन में फार्म से उत्पन्न HTML है
//= require jquery
//= require jquery_ujs
//= require rails.validations
//= require_tree .
और मेरी application.html.erb
लेआउट फ़ाइल में मेरे पास सिर्फ एक जेएस कॉल है। Js
संपादित 4:
मैं यह सोचा एक स्थिति है जहाँ client_side_validation
द्वारा उत्पन्न जे एस स्क्रिप्ट इनपुट पहचान नहीं कर रहा क्योंकि आईडी user_email
और नहीं user[email]
है हो सकता है। इसलिए मैंने user[email]
पर इनपुट के लिए id
बदल दिया और इसे हल नहीं किया।
किसी के पास कोई विचार है?
आप Firebug या वेब निरीक्षक और यहाँ पोस्ट एक यदि त्रुटि का उपयोग कर वेबपृष्ठ को लोड कर सकते हैं? यह जेएस कोड हो सकता है जो ठीक से नहीं चल रहा है। –
AJAX कॉल की प्रतिक्रिया पढ़ने का प्रयास करें (अपने पसंदीदा डीबगिंग टूल में अनुरोध/प्रतिक्रिया लॉगिंग सक्षम करें)। यह उत्पादन में परिवर्तित नियंत्रक प्रतिक्रिया भी हो सकता है, लेकिन यह एक जेएस मुद्दा होने की संभावना है, बैकएंड नहीं। –
@lexor मुझे सामान्य से कुछ भी नहीं मिला, लेकिन मैं फायरबग का बहुत अधिक उपयोग नहीं करता, इसलिए मुझे कुछ याद आ रहा है। यहां एक उत्पादन संस्करण है - http://falling-sunset-7904.herokuapp.com/ यदि आप 'abc' टाइप करते हैं और टैब आउट करते हैं, तो उत्पादन में आपको' अमान्य 'देखना चाहिए। फायरबग में, मुझे लगता है कि jQuery जानकारी लोड हो रही है ... तो ... सुनिश्चित नहीं है कि क्या हो रहा है। – marcamillion