是否有一种迷人的方法可以检查页面上的链接是否指向返回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
答案 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