0

Twilio のこのチュートリアルに従ってみようとしています -->http://www.twilio.com/docs/howto/search-and-buy

しかし、シナトラで書かれているので、レールに変換しようとして混乱しています。

これを、それぞれのビューで :create と :show の 2 つのアクションに変換したい

filespost '/search-numbers' do
  account_sid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
  auth_token = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY'

  client = Twilio::REST::Client.new(account_sid, auth_token)

  search_params = {}
  %w[in_postal_code near_number contains].each do |p|
    search_params[p] = params[p] unless params[p].nil? || params[p].empty?
  end

  begin
    local_numbers = client.account.available_phone_numbers.get('US').local
    numbers = local_numbers.list(search_params)

    unless numbers.empty?
      out = '<html><head><title>Choose a number</title></head><body><h3>Choose a number</h3>'
      numbers.each do |number|
        out << "<form method='POST' action='/buy-number'>"
        out << "<label>#{number.friendly_name}</label>"
        out << "<input type='hidden' name='PhoneNumber' value='#{number.phone_number}' />"
        out << "<input type='submit' value='BUY' /></form>"
      end
      out << '</body></html>'
    else
      '<b>Sorry!</b> Twilio doesn\'t have any numbers available that match those constraints.'
    end
  rescue StandardError => e
    '<b>Sorry!</b> ' + e.message + '.'
  end

終わり

したがって、私の考えは、new、create、および show を使用して、find_numbers コントローラーを作成することです。新しいものは、データベースとは関係のない単なるフォームです。Create アクションは数値の配列を作成し、show アクションはそれらを表示する必要があります。

ここで混乱します `最初の混乱はこれです。作成アクションに入るのだと思います -- >

  search_params = {}
  %w[in_postal_code near_number contains].each do |p|
    search_params[p] = params[p] unless params[p].nil? || params[p].empty?
  end

`

これがレールコントローラーで機能するかどうかはわかりません。

残りは show アクションに入ると思いますが、ここでの問題は、show アクションが search_params をどのように呼び出すことができるかということです。

私は何時間も微調整してきましたが、どんなガイダンスも大歓迎です!!!


アップデート

フォームがレールでどのように機能するかについてさらに学習した後、このコードを新しいコントローラー「find_numbers」に移動して、新しいアクション、アクションの作成、およびアクションの表示を試みました。Show show でエラーが発生します:

NoMethodError in Find_numbers#create

Showing C:/Sites/dct/app/views/find_numbers/show.html.erb where line #1 raised:

undefined method `each' for nil:NilClass

numbers インスタンス変数が nil であるため、それより前の何かが機能しなかったためだと思います。

これが私のコントローラーです:

class FindNumbersController < ApplicationController

def new
    @user = current_user
end

def create
    @user = current_user
    render 'find_numbers/show'
end

def show
    @user = current_user
    client = Twilio::REST::Client.new(@user.twilio_account_sid, @user.twilio_auth_token)

    search_params = {}
    %w(in_postal_code near_number contains).each do |p|
      search_params[p] = params[p] unless params[p].blank?
    end

    local_numbers = client.account.available_phone_numbers.get('US').local
    @numbers = local_numbers.list(search_params)    


end

終わり

私が知っていることは、 current_user 変数が機能することです。私はsearch_paramsの後でそれがうまくいかないと思います

マイショービュー

<%= number.friendly_name %>
<%= number.phone_number %>
4

1 に答える 1

0

Railsでは、これは機能するはずです。

search_params = {}
%w(in_postal_code near_number contains).each do |p|
  search_params[p] = params[p] unless params[p].blank?
end

そうでない場合....どのようなエラーが発生しますか?

于 2012-10-03T13:29:38.723 に答える