Проверка результата verify_recaptcha в HTML-файле Ruby on Rails - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь получить логический результат от verify_recaptcha, который реализован в моем контроллере приложения.

Код от контроллера:

def create
        #render plain: params[:student].inspect
        @student = Student.new(student_params)

        if verify_recaptcha(model: @student) && @student.save
            redirect_to @student
        else
            render 'new'
        end
    end

HTML-код:

<h1 class="col-md-12">New Student</h1>
              <div class="col-md-12">
                  <%= form_with scope: :student,url: students_path,local: true do |form|%>

                  <p>
                        <%= form.label :name %><br>
                        <%= form.text_field :name%>
                  </p>
                  <p>
                        <%= form.label :student_id,'Student ID' %><br>
                        <%= form.text_field :student_id%>
                  </p>
                  <p>
                        <%= form.label :course %><br>
                        <%= form.text_field :course%>
                  </p>
                  <%= recaptcha_tags%>
                  <p>
                        <%=form.submit 'Create Student'%>
                  </p>
                  <%end%>
                  <%= link_to 'Back', students_path %>
              </div>

РЕДАКТИРОВАТЬ: Вот что я хочу достичь, когда recaptcha не удается. enter image description here До сих пор, когда recaptcha терпит неудачу, веб-страница только перезагружается и не переходит на следующую страницу. Что я хочу сделать, это создать предупреждение с указанием количества ошибок. Оказывается, я не могу использовать verify_recaptcha в HTML. Любой совет?

1 Ответ

0 голосов
/ 06 ноября 2019

Если вы хотите использовать результат verify_recaptcha в представлении, вы можете присвоить результат чему-то в контроллере, возможно, так:

def create
    @student = Student.new(student_params)

    @recaptcha_succeeded = verify_recaptcha(model: @student)

    if @recaptcha_succeeded && @student.save
        redirect_to @student
    else
        render 'new'
    end
end

Теперь в представлении вы должны иметь возможностьдля ссылки на @recaptcha_succeeded.

Однако, передав модель в verify_recaptcha, в модель также следует добавить ошибку, в данном случае @student.errors. Эта информация также будет доступна в представлении. В документах по камню recaptcha (https://github.com/ambethia/recaptcha) это обсуждается более подробно.

...