0

ここでは、Twilio 電話番号の検索と購入のチュートリアルに従ってみます -->http://www.twilio.com/docs/howto/search-and-buy

今のところ、私がしたいのは、利用可能な電話番号をリストすることだけです. 現在、新しい、作成、破棄を備えたfind_numbersコントローラーがあります。

新しいアクションにはユーザーが入力するパラメータがあり、作成アクションはショーをレンダリングし、ショーはすべてをまとめて番号をリストすることになっています。

ただし、私が持っているコードでは、エラーが発生します

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 を返しているためだと思います。

新しいアクションに対する私の見解は次のとおりです。

<div class="container">
 <div class="row">
  <div class="span6 offset3">
    <%= form_tag("/find_numbers", :method => "post" ) do %>

      <%= label_tag(:in_postal_code, "Near US postal code (e.g. 94117):") %>
      <%= text_field_tag(:in_postal_code) %>

      <%= label_tag(:near_number, "Near this other number (e.g. +4156562345)") %>
      <%= text_field_tag(:near_number) %>

      <%= label_tag(:contains, "Matching this pattern (e.g. 415***EPIC):") %>
      <%= text_field_tag(:contains) %>  

      <%= submit_tag("Search", :class => "btn btn-large btn-primary") %>


    <% end %>
  </div>
 </div>
</div>

これは find_numbers コントローラーです

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].nil? || params[p].empty?
        end

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


    end

end

そして、これはショービューです

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

今朝(中国時間)から答えに近づいていますが、まだぐるぐる回っています!どんな助けでも大歓迎です。

4

1 に答える 1

1

レールについてもう少し学びたいと思うかもしれません。私が始めた本はhttp://pragprog.com/book/rails4/agile-web-development-with-railsです。

あなたが今行っていることは、Rails が動作するように設計されている方法に反しているように見えますが、create アクションに次のように入れることができるかもしれません:

@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].nil? || params[p].empty?
  end

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

また、オブジェクト @numbers があることを覚えておいてください。そのため、ショー ビューでは、次のような each ループを実行する必要があります。

<% @numbers.each do |number| %>
  <%= number.friendly_name %>
  <%= number.phone_number %>
<% end %>

私は Twilio について何も知らないので、あなたが Twilio の API をどのように使用しているかを調べることはできません。

于 2012-10-03T14:12:01.120 に答える