2013-02-11 37 views
1

我已經實現了一些允許我的表格行成爲鏈接的coffeescript。如何停止添加www.html.com到URL的開頭的欄杆

但是我遇到的問題是,我的應用程序似乎是增加http.com//到我工作的網址的開頭,這樣不但得不到www.google.com的我會得到www.http.com//www.google.com

我當前的設置:

#Coffeescript 

$ -> 
    $('tr[href]').click -> window.open 'http://' + $(this).attr('href'); 


#View 
    <% @jobs.each do |job| %> 
     <tr href='<%= job.job_url %>'> 
      <td><strong><%= job.title %></strong></td> 
      <td><%= job.company %></td> 
      <td><%= job.city %>, <%= job.country %></td> 
     </tr> 
    <% end %> 

存儲在我的數據庫中的URL全部都有www.作爲URL的一部分,但不包括http://

任何意見可能會發生在這裏將不勝感激。謝謝

回答

3

job_url返回完整的網址,例如

http://www.example.com/jobs/1234 

job_path返回相對路徑,例如,

'/jobs/1234' 

如果你要使用job_url,你不應該附加在你的CoffeeScript協議,爲您的網址將被horked,因爲它們會被追加協議的兩倍。

作爲最佳做法,您可能還會考慮使用data-href作爲<tr>上的屬性。我試圖做到這一點,它使HTML和Javascript之間的鏈接更加明確。我花了許多小時來追蹤設計師刪除或重命名我的Javascript依賴的類或屬性元素的錯誤!

所以,在您的ERB:

<tr data-href='<%= job.job_url %>'> 

在CoffeeScript的:

$ -> 
    $('tr[data-href]').click -> window.open 'http://' + $(this).attr('data-href'); 
+0

嗨IPD,謝謝您的回答。你會推薦像這樣的'$('tr [href]')這樣的咖啡文本。click - > window.open $(this).attr('href');'?如果這看起來不對,你是否可以用一個簡單的例子更新你的答案,以便我完全理解我應該改變的元素。非常感謝你的幫助:) – 2013-02-11 16:47:17

+2

我會給你一個額外的贊成,「不要把'href'寫在'''建議,但是,唉,我只允許一個。 [''](http://dev.w3.org/html5/markup/tr.html)上的'href'是無效的HTML和無效的HTML會導致有趣的錯誤。 – 2013-02-11 17:08:04

+0

非常感謝,今天晚上我會試試! – 2013-02-12 10:06:33