2015-09-07 69 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不斷嘗試 –

相關問題