无法在link_to中将方法更改为“post”

时间:2011-08-06 03:24:11

标签: ruby-on-rails ruby-on-rails-3

如标题所示,我无法将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改变超链接方法发布。

1 个答案:

答案 0 :(得分:1)

您确定已安装并启用jquery-ujs,这会从超链接发出非GET请求吗?

如果你还没有安装它,即使正确生成了html5属性'data-method',点击链接也会发送正常的GET请求。