簡體   English   中英

NoMethodError:nil:NilClass的未定義方法“ each”

[英]NoMethodError : undefined method `each' for nil:NilClass

我正在嘗試按照此處的教程搜索和購買Twilio電話號碼-> http://www.twilio.com/docs/howto/search-and-buy

現在,我要做的就是列出可用的電話號碼。 現在,我有一個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 %>

自今天早上(中國時間)以來,我離答案越來越近,但仍然圍着圈跑! 任何幫助,不勝感激。

您可能想了解有關Rails的更多信息。 我以前開始使用的書是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對象,因此在show視圖中,您必須執行一個each循環,例如:

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

我對Twilio一無所知,因此無法檢查您對他們的API的使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM