Rails路由:我缺少什么? [英] Rails routing: What am I missing?

查看:79
本文介绍了Rails路由:我缺少什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序具有票证,并且可以解决票证。我可以通过AJAX发布到:resolve操作,没有任何问题,但是我不能通过普通的HTML表单发布。我得到没有路线匹配 / tickets / 321 / resolve 。 HTML表单和JS都指向相同的确切URL。我在做什么错了?

My app has Tickets, and a ticket can be "resolved". I can POST via AJAX to the :resolve action with no issues, but I cannot POST via a normal HTML form. I get No route matches "/tickets/321/resolve". Both the HTML form and the JS point to the same exact URL. What am I doing wrong?

路线:

resources :tickets do
  post :resolve, :on => :member
end

控制器:

def resolve
  resource.resolved!

  respond_to do |wants|
    wants.html { redirect_to :back }
    wants.js
  end
end

表格:

= form_for(ticket, :url => resolve_ticket_path(ticket)) do |f|
  ...


推荐答案

实际上,当您在尝试通过默认情况下发送具有现有资源(票证)轨道的表单将发送 PUT 请求,因此应设置:method => :post 清除或更改

Actually when you are trying to send your form with exists resource (ticket) rails by default will send PUT request, so you should set :method => :post clear or change route from

post :resolve, :on => :member

put :resolve, :on => :member

这篇关于Rails路由:我缺少什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆