Rails 3中的路由问题:ActionController :: RoutingError(没有路由匹配......)

Jam*_*coe 4 routing ruby-on-rails-3

我创建了一个名为"post"的自定义RESTful操作.它在TransactionsController中显示为名为post的(公共)方法.

resources :transactions do
  member :post do
    post :post
  end
end
Run Code Online (Sandbox Code Playgroud)

我有一个配置如下的表单:

<form action="/transactions/25/post">
   ...
   <input id="transaction_submit" commit="commit" type="submit" value="Post">
</form>
Run Code Online (Sandbox Code Playgroud)

当我点击"发布"按钮时,我的服务器收到:

POST "/transactions/25/post"
Run Code Online (Sandbox Code Playgroud)

我希望这在我的TransactionController中调用"post"方法,但我得到一个路由错误

ActionController::RoutingError (No route matches "/transactions/25/post"):
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢.

詹姆士

lwe*_*lwe 8

最后找到了一个解决方案,问题是form_for添加隐藏_method字段的值"put",因为事务已经存在,为了规避这个问题,我必须做以下事情:

<%= form_for @transaction, :url => post_transaction_path(@transaction), :html => { :method => :post } do |form| %>
Run Code Online (Sandbox Code Playgroud)

至少为我解决了这个问题,请参阅https://rails.lighthouseapp.com/projects/8994/tickets/4884-routing-error-for-restful-resource-under-namespace以获取进一步的参考