2015-09-07 71 views
0

我正在使用inline_svg gem为我的图标渲染SVG。 我的观点的代码如下所示:我可以使用Rails link_to进行POST而不是button_to吗?

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

我有一个心脏图标,当用户点击它,一个POST应Rails的favorite途径取得。我在邮差测试中测试了它,它确实在我的观点之外正确工作。但是,在我看来,单击最爱会生成一个GET

我知道我可以使用button_to代替link_toPOST然后将happen..BUT ... 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 %> 
+1

我不知道这是否有帮助,但试试这个:'<%= link_to(inline_svg(listing.favorite_icon,class:“svg”),favorite_listing_path(id:listing.id),method :: post )%>'或者可以使用'do end'来使用'link_to'块。 – Deep

+0

@Deep将他们指向[documentation](http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to),您可以将该评论转换为正确的答案。 –

+0

至于'button_to'的东西,你可能想要抛出一个'.html_safe'调用来告诉Rails你的SVG字符串不需要被HTML转义。 –

回答

0

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

0

对于动词:帖子,:删除:补丁,和:说,如果用户禁用JavaScript,请求将回落到使用GET。所以再添加一个选项。 remote: true以上来自您的第一个问题。

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

感谢您的帮助。这没有奏效。它仍在做'GET'。另外,我尝试在parens中的link_to后包装所有内容,但没有运气。 – Kelly

+0

好@Kelly不断尝试 –

相关问题