2017-05-01 44 views
-1

我正嘗試在兩個不同的地方調用控制器操作。即使在定義實例變量時獲取nil:NilClass的未定義方法`[]'

控制器如下:

def create 
     @phone_number = PhoneNumber.find_or_create_by(phone_number: params[:phone_number][:phone_number]) 
     @phone_number.generate_pin 
     @phone_number.send_pin 
     respond_to do |format| 
     format.js # render app/views/phone_numbers/create.js.erb 
     end 
end 

我想打電話給create在視圖中的鏈接:

<%=link_to "Resend Pin", phone_numbers_path, method: :post %> 

耙路線輸出看起來是這樣的:

phone_numbers POST /phone_numbers(.:format)  phone_numbers#create 
new_phone_number GET /phone_numbers/new(.:format) phone_numbers#new 
phone_numbers_verify POST /phone_numbers/verify(.:format) phone_numbers#verify 

我在PhoneNumber activerecord有數據。當我點擊「重新發送引腳」我收到以下錯誤:

NoMethodError in PhoneNumbersController#create 

undefined method []」爲無:NilClass`

有人可以告訴我什麼我錯過了?

html.erb

<div id="send-pin"> 
    <h3>What's your phone number?</h3> 
    <%= form_for @phone_number, remote: true do |f| %> 
    <div class="form-group"> 
     <%= f.text_field :phone_number %> 
    </div> 
    <%= f.submit "Send PIN", class: "btn btn-primary", id: 'send-pin-link' %> 
    <% end %> 
</div> 
<div id="verify-pin"> 
    <h3>Enter your PIN</h3> 
    <%= form_tag phone_numbers_verify_path, remote: true do |f| %> 
    <%= hidden_field_tag 'hidden_phone_number', '' %> 
    <div class="form-group"> 
     <%= text_field_tag :pin %> 
    </div> 
    <%= submit_tag "Verify PIN", class: "btn btn-primary" %> 
    <% end %> 

    <%=link_to "Resend Pin", phone_numbers_path, method: :post %> 

</div> 
+0

'PARAMS [:PHONE_NUMBER]''是你nil'創建行動中。您需要將它與請求一起傳遞。 –

回答

1

params[:phone_number][:phone_number]爲空。

嘗試以下,鑑於

<div id="send-pin"> 
<h3>What's your phone number?</h3> 
<%= form_for @phone_number, remote: true, html: {id: "first_form"} do |f| %> 

<div class="form-group"> 
<%= f.text_field :phone_number %> 
</div> 
<%= f.submit "Send PIN", class: "btn btn-primary", id: 'send-pin-link' %> 
<% end %> 
</div> 
<div id="verify-pin"> 
<h3>Enter your PIN</h3> 
<%= form_tag phone_numbers_verify_path, remote: true do |f| %> 
<%= hidden_field_tag 'hidden_phone_number', '' %> 
<div class="form-group"> 
<%= text_field_tag :pin %> 
</div> 
<%= submit_tag "Verify PIN", class: "btn btn-primary" %> 
<% end %> 

<%=link_to "Resend Pin",'#', id: "resend_pin_code" %> 
</div> 

<div id="status-box" class="alert alert-success"> 
<p id="status-message">Status: Haven’t done anything yet</p> 
</div> 


<script> 
$("#resend_pin_code").click(function(){ 
$("#first_form").submit(); 
} 
) 
</script> 
+0

是這樣的嗎?''<%= link_to「重新發送引腳」,phone_numbers_path,方法:: post,(params [:phone_number] [:phone_number])%>' ' – user3576036

+0

不,不完全是這樣的,你可以粘貼html/erb代碼,以便我可以給你正確的代碼? –

+0

已添加。 「Resend Pin」鏈接位於最後一行。 – user3576036

相關問題