我创建了一个名为“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/

10-17 01:54