2012-10-03 30 views
0

我試圖按照教程在這裏搜索和購買Twilio電話號碼 - > http://www.twilio.com/docs/howto/search-and-購買NoMethodError:未定義的方法`each'爲零:NilClass

現在,我想要做的就是列出可用的電話號碼。現在我有一個find_numbers控制器,用new,create,destroy。

新操作具有用戶填寫的參數,而創建操作呈現該展示,並且該展示應該將它放在一起並列出數字。

但是,與我的代碼,我得到的錯誤

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 %> 

我我明白了從今天早上(中國時間)開始接近答案,但仍然在圈內跑來跑去!任何幫助不勝感激。

回答

1

您可能想了解更多關於導軌的信息。我用上手本書是http://pragprog.com/book/rails4/agile-web-development-with-rails

什麼你現在正在做的似乎違背Rails是如何設計的工作,但你也許可以把你的創建操作如下:

@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所以在你的節目鑑於你必須做的每一個循環,如:

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

我不知道什麼Twilio,所以我無法檢查在您的使用他們的API。

+0

Thunkele,你太棒了!我不知道變量之間持續存在視圖(即,如果我在創建動作中定義了@numbers,它將不會顯示在show動作中)。 隨着你的建議,它的工作!我也會得到你建議的書。 –

+0

真棒很高興聽到! –

相關問題