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