我正在使用Rails 4。
我有一个stream
模型,它在routes.rb
中具有以下路由代码:
namespace :admin do
resources :streams, param: :stream_id
end
我得到以下路由信息:
admin_streams GET /admin/streams(.:format) admin/streams#index
POST /admin/streams(.:format) admin/streams#create
new_admin_stream GET /admin/streams/new(.:format) admin/streams#new
edit_admin_stream GET /admin/streams/:stream_id/edit(.:format) admin/streams#edit
admin_stream GET /admin/streams/:stream_id(.:format) admin/streams#show
PATCH /admin/streams/:stream_id(.:format) admin/streams#update
PUT /admin/streams/:stream_id(.:format) admin/streams#update
DELETE /admin/streams/:stream_id(.:format) admin/streams#destroy
对于新的流,没有问题,Rails会为create
方法生成正确的表单属性。
我的问题是当我尝试为update
生成一个表单时。如此答案中所述,表单的代码如下:
<%= form_for @stream do |f| %>
:
:
<% f.button %>
<% end %>
然而,这是Rails生成的代码:
<form accept-charset="UTF-8" action="/streams/xxxx" class="edit_stream" id="edit_stream_4" method="post">
如您所见,由于某些原因Rails选择的方法是post
而不是put
。
我知道我可以手动覆盖该方法,但我很难相信这是我需要做的。 有没有建议?