检查href链接页面是否存在

时间:2016-06-22 07:28:19

标签: jquery html ruby-on-rails ruby

是否有一种迷人的方法可以检查页面上的链接是否指向返回HTML 200代码的页面?我想允许用户在模型中设置自己的链接,但我也想阻止导致500或404页面的链接。

我认为,一种方法是在每个页面请求中检查控制器中的给定链接,并将该链接的返回代码(使用http-party)进行检查。而不是根据结果做出反应。

Model(schema.rb):

create_table "teaser_items" do |t|
    t.string   "text",     limit: 255
    t.string   "link",     limit: 255
    ...
end

控制器:

def show
   # only if TeaserItem link is valid
   @teaser_items = TeaserItems.where(active: true).order(:position)
   ...
end

1 个答案:

答案 0 :(得分:1)

使用ruby stdlib,您可以执行以下操作:

require 'net/http'

url = URI.parse(@teaser_item.link)
response = Net::HTTP.new(url.host, url.port)
http.request_head(url.path)
p response.status # check if 200 or 201

使用法拉第宝石:

Faraday.head(@teaser_item.link).status == 200