2012-08-02 43 views
1

當前,當我的應用程序中的用戶創建新的工作職位時,他們輸入的URL鏈接到他們網站上的職位頁面。然後我想用它鏈接到他們的網站。鏈接到外部URL對象RoR

它存儲在我的數據庫中作爲job.job_url,我在我的控制器中定義了一個對象@link以查找作業和相關URL。

目前,我有下面的代碼來遍歷所有工作,並提供鏈接:

<section id="job-wrapper"> 
    <% @jobs.each do |job| %> 
    <%= link_to @link.job_url do %> 
     <%= job.title %> 
     <%= job.location %> 
     <%= job.job_type %> 
     <%= job.salary %> 
     <%= job.company %> 
    <% end %> 
    <% end %> 
</section> 

我遇到的問題是,沒有包含http://軌的URL假定鏈接是內部的,因此產生一個鏈接像localhost:3000/www.google.com

有沒有一種方法可以確保Rails僅將鏈接識別爲實例中的外部鏈接?或者,有人可以解釋如何將http://添加到創建的所有鏈接,除非用戶已經聲明瞭它?

在此先感謝您的幫助!

+1

HTTP: //stackoverflow.com/questions/5012188/rails-link-to-exte rnal-site-url-is-attribute-of-user-table-like-users-websit – 2012-08-02 14:44:31

+0

檢查http://stackoverflow.com/questions/5012188/rails-link-to-external-site-url-is-attribute -of-user-table-like-users-websit – 2012-08-02 14:45:46

+0

爲了確保你的用戶用'http://'前綴所有url,我建議你寫一個自定義驗證器。這些鏈接將有助於:1)[http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-validators]和2)[http://stackoverflow.com/questions/161738/what-is-the-best-正則表達式來檢查,如果-A-字符串是一個有效的URL] – Gooner 2012-08-02 14:55:02

回答

2

感謝您的幫助!

我設法創建一個名爲新幫手來解決這個URLhelper

這包含:

module UrlHelper 
    def url_with_protocol(url) 
    /^http/.match(url) ? url : "http://#{url}" 
    end 
end 

我然後只用下面的link_to

<%= link_to url_with_protocol(@link.job_url), :target => '_blank' do %> 

感謝