2015-07-19 173 views
1

我希望添加一個完全像link_to一樣的幫手,但是會爲鏈接添加一個url參數。我嘗試這樣做:擴展link_to功能?

def tracked_link_to(url, id, options) 
    link_to('url?utm_link=#{id}', options) 
    end 

而且我打過電話這樣的:

<% tracked_link_to '/', 'logo' , alt: 'Zenconomy', class: 'logotype', itemprop: 'url' do %> 
    <%= svg 'logotype-icon', 'icon-logo' %> 
    <% end %> 

,但由於某種原因,沒有做任何輸出。

+0

'tracked_link_to' not taking blocks ...你是如何提供該塊還沒有.. :) –

回答

3

您錯過了等號。應該是:

<%= tracked_link_to '/', 'logo' , alt: 'Zenconomy', class: 'logotype', itemprop: 'url' do %> 

除了那你的tracked_link_to實現將很可能產生不同的結果比您預期。我擔心你,這不會那麼容易實現。首先,link_to適用於字符串,哈希或對象:

link_to('object/1') 
link_to(object) 
link_to(action: :show) 

其次,串已經可以包括查詢參數:

tracked_linked_to('object/1?preview=true') 

在這種情況下,你需要使用&而不是?。另外,如果字符串url已包含utm_param,你會怎麼做?

+0

我得到/Users/kristoffer/web/zenconomy/source/layouts/layout.erb:20:語法錯誤,意外的' )'... logotype',itemprop:'url'do).to_s; @_out_buf <<'...^/Users/kristoffer/web/zenconomy/source/layouts/layout.erb:36:語法錯誤,意外的keyword_ensure,期待')'/ Users/kristoffer/web/zenconomy/source/layouts /layout.erb:38:語法錯誤,意外的關鍵字結尾,期待')' – Himmators

+1

這是因爲您的方法並不期待Arup提到的方法。無論如何,擴展link_to似乎不是一個正確的方式,擴展'url_for'會容易得多。 – BroiSatse