我创建了一个名为“post”的自定义 RESTful 操作。它出现在 TransactionsController 中,是一个名为 post 的(公共(public))方法。
resources :transactions do
member :post do
post :post
end
end
我有一个配置如下的表单:
<form action="/transactions/25/post">
...
<input id="transaction_submit" commit="commit" type="submit" value="Post">
</form>
当我点击“发布”按钮时,我的服务器收到:
POST "/transactions/25/post"
我希望这会在我的 TransactionController 中调用“post”方法,但我收到了路由错误
ActionController::RoutingError (No route matches "/transactions/25/post"):
有任何想法吗?谢谢。
詹姆士
最佳答案
终于找到了解决方案,问题是 form_for
添加了值为 _method
的隐藏 "put"
字段,因为交易已经存在,为了规避这个问题,我必须执行以下操作:
<%= form_for @transaction, :url => post_transaction_path(@transaction), :html => { :method => :post } do |form| %>
至少为我解决了这个问题,请参阅 https://rails.lighthouseapp.com/projects/8994/tickets/4884-routing-error-for-restful-resource-under-namespace 以获取进一步引用
关于Rails 3 中的路由问题:ActionController::RoutingError(没有路由匹配......),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4650486/