我试图在两个不同的地方调用控制器动作。
控制器如下:
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中有数据。当我点击“重新发送Pin”时,我收到以下错误:
NoMethodError in PhoneNumbersController#create
undefined method
[]'为nil: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 :(得分:1)
Initialize
为空。
在视图中尝试以下
params[:phone_number][:phone_number]