2014-01-05 3 views
1

코딩 작업이 처음이고 첫 번째 레일 앱을 작업하고 있습니다. Wordnik API를 사용하여 단어의 동의어를 반환합니다. 여태까지는 그런대로 잘됐다. 아래 코드는 한 단어 만 사용하는 한 작동합니다.심볼 나누기

코드는 다음과

<%= form_tag "/search", method: "GET" do %> 
     Start Smithing: 
<%= text_field_tag :search_word %> 
<%= submit_tag "get those synonyms" %> 

코드 아래 index.html.erb에

class WordnikController < ApplicationController 
    def search 
    query = params[:search_word] 
    @words = Wordnik.word.get_related(query, :type => 'synonym').first["words"] 
    end 
end 

내가 알아 내기 위해 노력하고있어 Wordnik 컨트롤러에 입력하는 방법 전체를에 문구 또는 문장을 검색하고 API에서 문장의 각 단어에 대한 동의어를 반환하도록합니다. 이 경우 기호를 분할 한 다음 각 단어를 개별적으로 전달해야합니다.

Wordnik.word.get_related(query, :type => 'synonym').first["words"] 

문제는 내가 어떻게하는지 알 수 있습니다. 나는하려고 노력했다.

query = params[:search_word].to_s.split 

그러나 그것은 명백하게 작동하지 않았다.

나는 the Symbol documentation에서 아무것도 찾을 수 없었고 스택 오버플로에서도 this question을 발견했습니다.

누구나 올바른 방향으로 나를 가리킬 수있는 생각이 있습니까?

Screenshot of code with the above.

+0

하는 [: search_word] .split', 당신이 얻을해야 토큰 (단어)의 배열. 그들은 공간 이외의 다른 것들로 분리되어 있는가? "잘못된"결과는 무엇입니까? – Vidya

+0

.split을 사용했을 때 무슨 일이 일어나고 있는지 알아보기 위해 계속해서 쪼개지 않는 것 같습니다. – cohart

+0

'Wordnik.word.get_related'가 한 번에 여러 단어를 사용할 수 있다는 것을 확인 했습니까? 아니면 각 단어마다 한 번씩 전화를해야합니까? – Vidya

답변

0

당신은 모든 단어를 쿼리해야합니다, 그래서 아마도 Wordnik은 인수로 배열을 지원하지 않습니다 : 당신이`의 PARAMS를 사용하는 경우

def search 
    query = params[:search_word].split 
    @words = query.map { |word| Wordnik.word.get_related(word, :type => 'synonym').first["words"] } 
end 
+0

나를 이길. 다음 문서를 참조하십시오. http://developer.wordnik.com/docs.html#!/word/getRelatedWords_get_4 문자열을 분할하면 배열의 각 요소에 대해 API를 호출해야합니다 (위 코드 참조). –

+0

굉장! 초보자 질문에 대해 유감입니다. 나는 아직 그것을 이해하지 못했지만, 조금은 가지고 있어야하고, 이것은 확실히 올바른 길을 찾아왔다! 감사합니다. Vidya, Gosha 및 Steve – cohart