2011-09-03 19 views
0

나는 현재 사용자 페이지에서 관련 기사를 구현하려고합니다. 나는 흑점 등을 사용하지 않고있다. Uchenna Okafor가이 코드를 시도했지만 오류가 발생합니다. 모델에서 관련 기사 Ruby on Rails에서

내가 show.html.erb에

#Related Search 
def self.related_search(query, join = "AND") 
    find(:all, :conditions => related_search_conditions(query, join)) 
end 

def self.related_search_conditions(query, join) 
    query.split(/\s+/).map do |word| 
     '(' + %w[name instructions].map { |col| "#{col} LIKE #{sanitize('%' + word.to_s + '%')}" }.join(' OR ') + ')' 
    end.join(" #{join} ") 
end 

이 난

<%= @recipe.related_search %> 

내 오류 메시지가이

NoMethodError in Recipes#show 

Showing /Users/sigidis/Ruby/food/app/views/recipes/show.html.erb where line #129 raised: 

undefined method `related_search' for #<Recipe:0x10d4980a0> 

Extracted source (around line #129): 

126: <hr /> 
127: 
128: 
129: <%= @recipe.related_search %> 
130: 
131: 
132: <hr /> 

Rails.root: /Users/sigidis/Ruby/food 
Application Trace | Framework Trace | Full Trace 

app/views/recipes/show.html.erb:129:in `_app_views_recipes_show_html_erb__699416749_2260079280_0' 
app/controllers/recipes_controller.rb:82:in `show' 

Request 

Parameters: 

{"id"=>"35"} 

Show session dump 

Show env dump 
Response 

Headers: 

None 

누군가가 나를 도울 수, I Rails에 익숙하지 않아 도움이되었습니다. 미리 감사드립니다.

참고 문헌. [http://stackoverflow.com/q/7086092/812668][1]

답변

1

인스턴스 메소드와 클래스 메소드가 혼동스럽게 보일 수 있습니다. @recipe을 만드는 방법을 모르지만 self.related_searchself.related_search_conditions에있는 self을 삭제 해보세요.

편집 :

좋아, 나는 조금 더 이해한다고 생각한다. 먼저, 해당 메소드가 사용자의 recipe.rb 모델에 있다고 가정하고 사용자는 class Recipeend으로이 메소드를 둘러 쌌습니다. 둘째, @recipe에는 정의가 없습니다. 대신 Recipe을 사용하여 클래스를 참조하십시오. 마지막으로, 메서드는 적어도 첫 번째 인수 (이 경우 검색 쿼리)를 전달해야합니다. 따라서 다음을 시도하십시오 : Recipe.related_search("QUERY HERE").

+0

여전히 같은 오류가 발생합니다. 내 컨트롤러에서도 아무것도 선언해야합니까? – Benjamin

+0

편집 내용을 확인하고 질문에 대한 답변을 확인하십시오. – VNO

+0

나는 당신이 의미하는 것을 조금 이해한다고 생각합니다. 나는 recipe.rb라는 컨트롤러를 가지고 있는데, 위의 코드가있는 곳이다. 나는 현재와 비슷한 요리법을 보여주고 자 노력 중이다. 나는 당신의 접근 방식을 시도하고 난 #이 (라인 # 129의 주위에) 인수의 잘못된 번호 (1 0) 추출 소스를 표시하면 ArgumentError 조리법에 '얻을 : 126 :


129 : <% = Recipe.related_search % > 132 :
앱 /보기/레시피/show.html.erb : 129 :'related_search '129 : 앱 /보기/레시피/show.html.erb _app_views_recipes_show_html_erb__699416749_2189106480_0'에서 '에서 앱/제어기/recipes_controller.rb : 90 :'show ' ' – Benjamin

관련 문제