【发布时间】:2015-09-07 04:43:32
【问题描述】:
我正在使用 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>
我有一个心形图标,当用户点击它时,POST 应该被添加到 Rails favorite 路由。我在 Postman 中对此进行了测试,它确实在我的视野之外正常工作。但是,在我看来,点击收藏会生成一个GET。
我知道我可以使用button_to 代替link_to,然后POST 会发生..但是...button_to 不能正确渲染我的SVG(见附图)。
所以我可以采取两种方式之一...有人可以帮我将我的链接指向POST吗?或者有人可以告诉我为什么我的 SVG 不能用 button_to 正确渲染吗?
与link_to:
button_to:
更新:这是我尝试过的一些事情...单击仍然会导致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 %>
【问题讨论】:
-
我不知道这是否有帮助,但试试这个:
<%= link_to(inline_svg(listing.favorite_icon, class: "svg"), favorite_listing_path(id: listing.id), method: :post) %>或者您可以使用link_to块使用do end。 -
@Deep 将他们指向documentation,您可以将该评论转换为一个体面的答案。
-
就
button_to的内容而言,您可能需要调用.html_safe来告诉Rails 您的SVG 字符串不需要进行HTML 转义。 -
我认为最好的方法是使用link_to,并在其上应用按钮css。
标签: ruby-on-rails ruby svg