我有以下行生成表单标记;
<%= form_for :stream, url: stream_path(@stream), method: :patch do |f| %>
它生成以下内容;
<form method="post" action="/streams/52b02d267e3be39d3da5aa609f1049d7" accept-charset="UTF-8">
如果我将其更改为:put
,它仍有帖子,但如果我写method: :get
,将更改为get
有没有人知道为什么会这样做以及我可以做些什么来阻止它?
这是rake路线的输出;
Prefix Verb URI Pattern Controller#Action
streams GET /streams(.:format) streams#index
POST /streams(.:format) streams#create
new_stream GET /streams/new(.:format) streams#new
edit_stream GET /streams/:id/edit(.:format) streams#edit
stream GET /streams/:id(.:format) streams#show
PATCH /streams/:id(.:format) streams#update
PUT /streams/:id(.:format) streams#update
DELETE /streams/:id(.:format) streams#destroy
背景是这是一个简单的编辑表单,我想要它做的只是他控制器的更新方法。
在我的布局文件中,我将csrf_meta_tags和我的javascript_include_tag
链接引入名为“stream”的文件,其中包含以下内容
//= require jquery
//= require jquery_ujs
答案 0 :(得分:10)
method: (:get|:post|:patch|:put|:delete)
来自文档:
选项哈希中的“。如果动词不是GET或POST,HTML表单本身支持,则表单将设置为POST,名为_method的隐藏输入将携带服务器要解释的预期动词。 “
来源:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html
答案 1 :(得分:0)
是//= require jquery_ujs
吗?
还要确保
<%= javascript_include_tag "application"%>
<%= csrf_meta_tag %>
出现在您的布局文件中。