搜索表单,带有电话号码验证

时间:2017-09-20 12:24:55

标签: ruby-on-rails forms twilio

我有一个搜索表单和电话号码验证表格我想知道如何关联表格,我想只在电话验证后显示搜索结果,并且用户只填写一个表格,其中包含产品标准和他的电话号码验证,

我的搜索表单

<%= form_tag recherche_path, id: "address_input", method: :get, autocomplete: 'on' do %>
          <%= text_field_tag :location, params[:location], {id: 'address', class: "namanyay-search-box", placeholder: 'Adresse du bien à vendre', :required => true} %>
          <%= text_field_tag :room_type, params[:room_type], {class: "namanyay-search-box-type", :required => true}  %>
          <%= submit_tag "Trouver une agence", id: "namanyay-search-btn" %>
        <% end %>

我的电话号码验证表

<%= form_for PhoneNumber.new, remote: true do |f| %>
            <div class="form-group">
              <%= f.text_field :phone_number, class: "namanyay-search-box" %>
            </div>
            <%= f.submit "Envoyer", class: "btn btn-danger", id: 'send-pin-link' %>
          <% end %>
        </div>

        <div id="verify-pin">
        <%= form_tag phone_numbers_verify_path, remote: true do |f| %>
          <%= hidden_field_tag 'hidden_phone_number', '' %>
          <div class="form-group">
            <%= text_field_tag :pin %>
          </div>
          <%= submit_tag "Verifier", class: "btn btn-danger" %>
          <% end %>

我不知道如何让它在我的控制器中工作

1 个答案:

答案 0 :(得分:1)

假设您正在使用twilio-ruby宝石。 如果你还没有Twilio控制器,可以这样做:

class TwilioController < ApplicationController

  def lookup
    respond_to do |format|
      if valid_phone_number(twilio_params)
        format.json { head :ok }
      else
        format.json { render json: 'error', status: :unprocessable_entity }
      end
    end
  end

  private

  def valid_phone_number?(phone_number)
    client = Twilio::REST::Client.new(ENV['TWILIO_ACCOUNT_SID'], ENV['TWILIO_AUTH_TOKEN'])
    begin
      response = client.lookups.phone_numbers(phone_number).fetch
      response.phone_number #if invalid, throws an exception. If valid, no problems.
      return true
    rescue => e
      if e.code == 20404
        return false
      else
        raise e
    end
  end

  def twilio_params
    params.require(:twilio_number)
  end
end

添加路线:

post '/twilio/lookup', to: 'twilio#lookup'

然后,您需要添加一些Javascript,以使用参数twilio_number向该路由发送POST请求。 (如果您需要帮助,请参阅此帖子:How to pass parameters in $ajax POST?

您可能必须在查找操作中调整JSON响应以满足您的需求,但这应该可以解决验证电话号码的问题。