没有路由匹配[GET]“/ controller / method”

时间:2017-05-01 10:17:03

标签: ruby-on-rails

我正在尝试在rails app上的链接上调用控制器操作。

控制器操作基本上会创建一个新的电话号码并生成一个Twilio引脚。

控制器

def resend
      @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

查看

<a href="<%= phone_numbers_resend_path %>">Resend Pin</a>

的routes.rb `

post 'phone_numbers/resend' => "phone_numbers#resend"

所以当我点击“重新发送Pin”时。我正在

No route matches [GET] "/phone_numbers/resend"

佣金路线输出

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
phone_numbers_resend POST /phone_numbers/resend(.:format) phone_numbers#resend

在路线中,我已将其设为帖子。我为什么要这个?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

link_to "Send Pin", phone_numbers_resend_path, method: :post

答案 1 :(得分:0)

Anchor tag(<a>)默认使用get请求。但在路由中,您使用的是post方法。因此,为了使其正常工作,您可以执行以下任何一项操作:

<%= link_to 'Resend Pin', phone_numbers_resend_path, method: :post %>

                        or

get 'phone_numbers/resend' => "phone_numbers#resend"