0

Rails と twilio を学習するために、通話追跡アプリを作成しています。現在、送信時に twilio の電話番号を他のパラメーターと一緒にデータベースに記録し、電話番号を購入するフォームがあります。

この機能は少し戻っていましたが、作成アクションでパラメーターを呼び出す機能を壊す何かを変更しました。

ここで、コードを実行すると、次のエラーが表示されます。

Twilio::REST::RequestError in PhonesController#create

Missing PhoneNumber parameter. Please specify the phone number that you would like to purchase

送信するフォームは次のとおりです。

    <% @numbers.each do |number| %>

            <%= form_for(@phone) do |f| %>
                <%= f.hidden_field :original_number, :value => params[:original_number] %>



                <%= f.hidden_field :name, :value => params[:name] %>
                <%= f.hidden_field :twilio_number,  :value => number.phone_number %>

                <div class="found_list">
                    <div class="found_phone_number">
                        <%= f.label :twilio_number, number.friendly_name %>
                    </div>
                    <div class="choose_found_number">
                    <%= f.submit "Choose This Number", :class => "btn btn-large btn-success" %>
                    </div>
                </div>
                    <hr>
            <% end %>
    <% end %>

submit を押したときにデバッガーが教えてくれることは次のとおりです。

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"/qJ6qATbNH2pZwxDPcKGifktWtAA5WrShbqb/2+lBbE=",
 "phone"=>{"original_number"=>"6463978797",
 "name"=>"Website",
 "twilio_number"=>"+16464900447"},
 "commit"=>"Choose This Number"}

そして、これが私の作成アクションです

  def create
    @user = current_user
    @phone = @user.phones.build(params[:phone])
    client = Twilio::REST::Client.new(@user.twilio_account_sid, @user.twilio_auth_token)
    number = client.account.incoming_phone_numbers.create({:phone_number => params[:twilio_number]})
   if @phone.save && number.true
      flash[:success] = "Phone Number Created!"
      redirect_to user_path
    else
      render new_phone_path
      flash[:error] = "It looks like there were errors with the submission"
    end
  end

アクションを編集して、params[:twilio_number] を「+16464900447」に置き換えると、機能します。

ここまで頑張ってくれてありがとう!コントローラーで twilio_number パラメーターを適切に呼び出す方法について何か考えはありますか? それとも、他に問題があると思いますか?

4

2 に答える 2

1

あなたの問題は、params ハッシュの形式が間違っていることが原因だと思いますが、実際には

{
 "utf8"=>"✓",
 "authenticity_token"=>"/qJ6qATbNH2pZwxDPcKGifktWtAA5WrShbqb/2+lBbE=",
 "phone"=>{
   "original_number"=>"6463978797",
   "name"=>"Website",
   "twilio_number"=>"+16464900447"
 },
 "commit"=>"Choose This Number"
}

params[:twilio_number]存在しないことがわかります。存在するのはparams[:phone][:twilio_number]

しかし、もちろん、あなたのソリューションは、あなたがやっているときと同じように機能します

@phone = @user.phones.build(params[:phone])

params[:phone] を:twilio_numberキーとして電話インスタンスを作成しています

于 2012-10-09T12:21:36.283 に答える
0

params[:twilio_number] の代わりに @phone.twilio_number を試したところ、うまくいったようです。

于 2012-10-09T12:17:30.090 に答える