[英]NoMethodError (undefined method `each' for nil:NilClass):
[英]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.