私は、ユーザーが人間であるかどうかをチェックするHumanizer gemでRails 4を使用しています。 これまでのところとても良いです。しかし今、ある特定のフォームで、フォームを送信する前に、ユーザーが人間かどうかを確認する必要があります。Humanizer gem human validation Rails 4 with Ajax、Jquery
これまでのところ私はグーグルではありましたが、そのようなことをするための情報源やアイデアは見つかりませんでした。答えを入力した後、すべてのデータが、その答えが正しいかどうかをチェックするためにコントローラに送信されるように、HUMANIZER解答欄に反応し
作成した関数:
私はこれらの事を行っています。
チェックのために私が送信しているデータは、ヒューマナイザ質問、ヒューマナイザー質問ID、ヒューマナイア回答です。
マイ形式:
<%= form_for(@advertisement,:html => {:id=>"new_advertisement","data-parsley-validate" => true,:multipart => true}) do |f| %>
<%= f.label :humanizer_answer, @advertisement.humanizer_question %>
<%= f.hidden_field :humanizer_question_id ,:id=> "humanizer_question_id"%>
<%= f.hidden_field :humanizer_question , :value=>@advertisement.humanizer_question, :id=> "humanizer_question"%>
<%= f.text_field :humanizer_answer, :'data-validate_humanizer' => '/blocked/checkhumanizer',:'data-parsley-conditionalrequired'=>'["[name=\"paid\"]:checked", "false"]',:'data-parsley-validate-if-empty data-parsley-success-class' =>""%>
<button type="submit" class="blue-button btn btn-default" style="width:380px !important;"><%= t('add') %></button>
スクリプト:
$('[data-validate_humanizer]').blur(function() {
$this = $(this);
$.get($this.data('validate_humanizer'), {
question_id: $('#humanizer_question_id').val(),
question: $('#humanizer_question').val(),
answer: $(this).val()
}).success(function() {
alert("sucess");
}).error(function() {
alert("Error");
});
});
コントローラー:
def checkhumanizer
if params[:question_id].present? && params[:question].present? && params[:answer].present?
render :nothing => true, :status => 200
else
render :nothing => true, :status => 404
end
end
ルート:
resources :blocked do
collection do
get 'checkhumanizer'
end
end
注は:これまでのところ私は私が私が開始する単一のアイデアを持っていないvalidation.Butをする必要がある必要があるすべてのものを持っています。
解決策:すべての質問と回答があるヒューマナイザーロケールにアクセスできますか?それは良いアプローチか悪いのですか?
ありがとうございました!
サンドロdのHUMANIZERメソッドを使用して、これを試すことができます。ありがとう、完璧に動作します。 – Edgars