2016-07-28 12 views
0

私は、ユーザが元の記事へのリンクを提供することでデータベースに新しい記事を作成できるようにするsimple_formを作成しています。ユーザーがURL( "original_url")を提供する場合、Nokogiriを使用して情報を取得します。Rails + Nokogiri:コントローラ作成

次のエラーメッセージが表示されます。「nilをStringに暗黙的に変換しない」というフィールドは、「original_url」フィールドからのsimple_form入力がコントローラ/ Nokogiriで使用できないことを示します。

変数を保存する前にsimple_formの変数を使用することはできますか?

def create 
    if @original_url = nil 
    @article = Article.new(article_params) 
    else 
    @url = params[:original_url] #### I think this is where the problem is. How do I pass the "original_url" input into the controller? #### 
    data = Nokogiri::HTML(open(@url)) 
    headline = data.at_css(".entry-title").text.strip 
    @article = Article.new(:headline => headline) 
    end 

    respond_to do |format| 
    if @article.save 
     format.html { redirect_to @article, notice: 'Article was successfully created.' } 
     format.json { render :show, status: :created, location: @article } 
    else 
     format.html { render :new } 
     format.json { render json: @article.errors, status: :unprocessable_entity } 
    end 
    end 
end 

が、私は別の方法で "original_url" 変数を呼び出す必要があります: -

私のコントローラのコードを作成しますか?

+0

に思え 'paramsは[:original_url]' – hgsongra

+0

あなたは 'original_url'のPARAMのためのあなたの' form'コードを提供してくださいます任意の値が含まれていないのですか? – hgsongra

+0

"ノコギリを使って情報を取得します。"ノコギリが何かを「取っていない」ことを理解することは重要です。それはあなただけを解析し、検索/抽出/変更/マングルすることができます。どのようにデータを取得するかは、どのようなものであり、最も一般的にはOpenURIを使用します。これは、 'open'や別のHTTPクライアントを使ってURLを開く機能を提供します。 –

答えて

0

まず、あなたは最初の状態で割り当てを使用:

if @original_url = nil 

ので@original_urlは常にnilになり、条件が真なることはありません。それは古典的な間違いです。

あなたはRubyでnilの確認方法は次のとおりです。

if @original_url.nil? 

は今、@urlがnilである理由は、あなたのparamsに、あなたはarticleルートを持っている可能性が最も高いです。この場合は、次のように記述する必要があります。

@url = params[:acticle][:original_url] 
+0

ありがとう!今すぐ動作します:-) 今後の参考として、 "if @ url.empty?"を使用しなければなりませんでした。 "if @ original_url.nil?"ではありません。 Ilyaの時間があれば、おそらくparams [:model] [:column]がどのように動作するかを説明するレールのドキュメントへのリンクを共有できますか?どんな言葉を使うべきか分かりませんでしたので、ドキュメントを見つけることは本当に難しかったです:-) もう一度、助けをたくさん! –

+0

あなたは歓迎です:)可能性については、コントローラの公式Railsガイドのパラメータセクション(http://guides.rubyonrails.org/v4.2/action_controller_overview.html#parameters)を参照してください。 。 Railsガイドは、ほとんどのRailsトピックを学ぶよいスタートです。 –

関連する問題