2012-10-09 37 views
0

我正在構建一個通話跟蹤應用程序,以學習rails和twilio。現在,我有一個表單,當它提交時,記錄twilio電話號碼,以及數據庫的其他參數,然後再購買電話號碼。如何在<%= form_for的動作中正確調用參數

我有這個功能稍微回了一些,但我改變了一些東西,打破了我在調用create action中的參數的能力。

現在,當我運行代碼,我得到的錯誤:

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

下面是調試器告訴我,當我點擊提交:

Parameters: 

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

這是我的創建行動

如果我編輯操作並用'+16464900447'替換參數[:twilio_number],那麼它就會起作用。

感謝您堅持到目前爲止!你有關於如何正確調用控制器中的twilio_number參數的想法嗎?或者,你認爲還有其他問題嗎?

回答

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 [:手機]作爲:twilio_number

+0

瞭解,感謝解釋pjam! –

0

我試過@ phone.twilio_number,而不是params [:twilio_number],它似乎工作!

相關問題