2016-07-28 3 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"변수를 호출해야합니다 : -

내 컨트롤러 코드를 만들?

if @original_url = nil 

그래서 @original_url 항상 nil되고 조건이 true 결코 :

+0

것 같다'의 PARAMS [: ORIGINAL_URL]' – hgsongra

+0

당신이'original_url'의 PARAM에 대한'form' 코드를 제공하시기 바랍니다 것입니다 어떤 값을 포함하지 않는 이유는 무엇입니까? – hgsongra

+0

"Nokogiri를 사용하여 정보를 가져옵니다." Nokogiri가 아무 것도 "가져 오지"않는다는 것을 이해하는 것이 중요합니다. 그것은 파싱하고 검색/추출/변경/mangle 만 허용합니다. 데이터를 가져 오는 방법은 가져 오는 것이고, 우리는 OpenURI를 사용합니다. OpenURI는'open' 또는 다른 HTTP 클라이언트를 사용하여 URL을 여는 기능을 제공합니다. –

답변

0

첫째, 당신은 첫 번째 조건에서 할당을 사용합니다. 그것은 고전적인 실수입니다. 루비에 nil를 확인하는 방법은

:

if @original_url.nil? 

지금, @url는 무기 호입니다 이유가 PARAMS, 당신은 article 뿌리를 가지고 가능성이 높습니다. 이 경우에, 당신은 쓸 필요가 :

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

고마워요! 지금 작동합니다 :-) 나중에 참조 할 수 있도록 "if @ url.empty?"를 사용해야했습니다. "if @ original_url.nil?"이 아닙니다. Ilya 시간이 있다면 params [: model] [: column]이 어떻게 작동하는지 레일 문서에 대한 링크를 공유 할 수 있습니까? 어떤 문구를 찾을 지 모르기 때문에 어떤 문서를 찾기가 정말 어려웠습니다 :-) 다시 한번 도움을 청합니다! –

+0

환영합니다 :) 컨트롤러에 대한 공식 레일 가이드의 매개 변수 섹션 (http://guides.rubyonrails.org/v4.2/action_controller_overview.html#parameters)에서 가능한 것을 배우십시오 . Rails 가이드는 대부분의 Rails 주제를 배우기에 좋은 출발점입니다. –