如标题所示,我无法将link_to的方法更改为:post。实际上,生成的html包含预期的标记data-method="post"
,但它发送GET请求。
<% @playlists.each do |pl| %>
<%= link_to new_entry_path(:music_id => @music.id, :playlist_id => pl.id), :method => :post do %>
<span><%= pl.name %></span>
<% end %>
<% end %>
这会生成以下html:
<a href="/playlist/1/new_entry/3" data-method="post" rel="nofollow">
<span>dcastro's playlist</span>
</a>
路线:
match 'playlist/:playlist_id/new_entry/:music_id' => 'entries#create', :as => :new_entry, :via => :post
点击生成的链接后:
No route matches [GET] "/playlist/1/new_entry/3"
提前致谢!
编辑:如果我将路线更改为:via => :get
,它会起作用,但这不是我需要的。
编辑:没关系,我修好了。我有一个jQuery代码来隐藏/显示这个菜单,在其中的某个地方我使用了event.stopPropagation,它意外地阻止了不显眼的javascript改变超链接方法发布。
答案 0 :(得分:1)
您确定已安装并启用jquery-ujs,这会从超链接发出非GET请求吗?
如果你还没有安装它,即使正确生成了html5属性'data-method',点击链接也会发送正常的GET请求。