我可以使用Rails link_to来进行POST而不是button_to吗?

时间:2015-09-07 04:43:32

标签: ruby-on-rails ruby svg

我正在使用inline_svg gem为我的图标渲染SVG。 我的视图代码如下所示:

<div class="icon">
  <%= link_to inline_svg(listing.favorite_icon, class: "svg"), favorite_listing_path(id: listing.id), method: :post  %>
</div>

我有一个心形图标,当用户点击它时,应该对Rails POST路线favorite。我在Postman中对此进行了测试,并且它在我的观点之外正确地工作。但是,在我的视图中,点击收藏夹会生成GET

我知道我可以使用button_to代替link_toPOST将会发生..但是...... button_to无法正确渲染我的SVG (见附图)。

所以我可以采取以下两种方式之一...有人可以帮助我将link_to转到POST吗?或者有人可以告诉我为什么我的SVG无法使用button_to正确呈现?

使用link_to

Before

使用button_to

After

更新:以下是我尝试的一些内容...点击静止会导致GET另外,如果这样做有所不同,我就在Rails 4.2上。

<%= link_to "hi", controller: "listings", action: "favorite", id: listing.id, method: :post  %>

<%= link_to(inline_svg(listing.favorite_icon, class: "svg"), controller: "listings", action: "favorite", id: listing.id, method: :post)  %>
<%= link_to(favorite_listing_path(id: listing.id), method: :post)  do %>
  <div class="icon">
    <%= inline_svg(listing.favorite_icon, class: "svg") %>
  </div>
<% end %>

3 个答案:

答案 0 :(得分:0)

对于动词:post,:delete,:patch和:put。,如果用户禁用了JavaScript,请求将回退到使用GET。所以再添加一个选项。 x + x == 2 * x来自你的第一期。{/ p>

remote: true

答案 1 :(得分:0)

我想出来了。当我启动Rails项目时,我剥离了Rails-Jquery。我没有意识到{ method: POST }使用了这个。

答案 2 :(得分:0)

这篇文章已经很旧了,但我想评论一下在遇到它后对我有用的东西。

<%= link_to story_favourite_path(@story), method: :post do %>
    <%= render inline: Rails.root.join('public/bookmark-regular.svg').read %>
<% end %>