私は、URLを要求するフォームを持つ小さなアプリケーションをRoRに構築しています。 URLが入力され、送信ボタンが押されると、URLを取得してタイトル付きのレコードを作成するWebスクレイピングプラグインscrAPI(これは正常に動作しています)をダウンロードしました。返信の手助けが必要
私の問題は、URLが有効で、scrAPIが処理できれば、すべてを動作させることができることです。入力されたURLが正常に動作しない場合は、この "Scraper :: Reader :: HTTPInvalidURLError"が返されますが、Modelで作業していることからそのエラーを正しい方法で渡すことができません。
コントローラー:
#controller
class ArticleController < ApplicationController
def savearticle
@newarticle = params[:newarticle]
@link = @newarticle["link"]
@id = @newarticle["id"]
Article.getlink(@link)
success = Article.find(:last).update_attributes(params[:newarticle])
if success
render :partial => 'home/articlesuccess'
else
render :partial => 'home/articlebad'
end
end
end
# model
require 'scrapi'
class Article < ActiveRecord::Base
attr_accessor :getlink
def self.getlink(link)
scraper = Scraper.define do
process "title", :title => :text
result :title
end
uri = URI.parse(link)
Article.create(:title => scraper.scrape(uri))
end
end
方法:
1)適切スクレーパー::リーダー:: HTTPInvalidURLErrorハンドルなので、テキストは適切なエラーと表示に戻すことができます。
2)私はモデルから「uri」を返すことができ、コントローラーやビューでどのように使用できるかも知りたいと思います。
3)また、モデルで作成された記事のIDを返すので、コントローラの中でfind(:last)の代わりに使用することができます。これは悪い習慣のようです。
例外処理ソリューションは完全に機能しました。 – user647345