guy*_*oni 4 ruby-on-rails ruby-on-rails-4
我正在使用Rails 4.
我有一个stream
模型,其中包含以下路由代码routes.rb
:
namespace :admin do
resources :streams, param: :stream_id
end
Run Code Online (Sandbox Code Playgroud)
我得到以下路线:
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
Run Code Online (Sandbox Code Playgroud)
对于新流没有问题,rails为该create
方法生成正确的表单属性.
我的问题是当我尝试为其生成表单时update
.如本回答所述,我的表格代码是:
<%= form_for @stream do |f| %>
:
:
<% f.button %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是,这就是rails生成的:
<form accept-charset="UTF-8" action="/streams/xxxx" class="edit_stream" id="edit_stream_4" method="post">
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,Rails选择的方法由于某种原因post
而不是put
.
我知道我可以手动覆盖该方法,但我发现很难相信这是我需要做的.有什么建议?
这是完全正确的.看看这个:
这只是一个Rails的解决方法,并非所有浏览器都支持PUT方法.所以Rails模拟POST方法,但知道它确实是一个PUT.
如果你最好检查你的表单,你会发现一个隐藏的字段,如下所示:
<input name="_method" type="hidden" value="put" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3761 次 |
最近记录: |