2017-07-17 57 views
2

我想通過將用戶發送到我的API然後重定向來跟蹤鏈接的點擊率。因此,當他們生成一個網址時,我想運行某種代碼,將anchor的整個href替換爲某個API呼叫加上它們的目的地。Rails/Gsub - 以編程方式錨定href的條件前綴

定期anchor例子:

<a href="http://localhost:3000/dulce.html#"></a>

由於該網址在dulce.html#結束,那麼我想替換它只是#。 (<a href="#"></a>)但是,如果它不dulce.html#結束,然後我要追加東西起步階段,所以它是這樣的:

<a href="http://api.tracking.com/destination=http://localhost:3000/world.html"></a>

我有GSUB的經驗非常少,似乎無法找出使這種條件轉換髮生的語法。

任何想法?

回答

0

您可能不需要爲此使用gsub。你可以這樣做:

link = '<a href="http://localhost:3000/dulce.html#"></a>' 
# Get the href 
href = /\<a\shref\=\"(.+)\"\>\<\/a\>/.match(link)[1] 

# If you want to know if the href ends with a '#' 
if href.last(1) == '#' 
    # Do something here 
    new_link = '<a href="#"></a>' 
end 

# If you want to know if it ends in 'dulce.html#' 
if href.last(11) == 'dulce.html#' 
    # Do something here 
    new_link = "<a href='http://api.tracking.com/destination=#{href}'></a>" 
    # Which would result in 
    # <a href="http://api.tracking.com/destination=http://localhost:3000/world.html"></a> 
    # If href is http://localhost:3000/world.html 
end 

您可以使用優秀的http://www.regexpal.com/來測試你的正則表達式。

希望這會有所幫助!