0

ユーザーの現在のページに関連記事を実装しようとしています。私は黒点などを使っていません。Uchenna Okaforでこのコードを試しましたが、エラーが発生します。

モデルでは私は持っています

    #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

show.html.erbで私は持っています

  <%= @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

誰かが私を助けてくれますか、私はRailsに不慣れで、助けていただければ幸いです。前もって感謝します。

参照。[http://stackoverflow.com/q/7086092/812668] [1]

4

1 に答える 1

1

インスタンスメソッドとクラスメソッドを混同しているようです。どのように作成しているのかわかりませんが、 inとを@recipe削除してみてください。selfself.related_searchself.related_search_conditions

編集:

わかりました、もう少し理解できたと思います。まず、これらのメソッドがモデルにあり、それらをaとrecipe.rbで囲んでいると仮定します。第二に、定義がありません。したがって、代わりにクラスを参照するために使用します。最後に、メソッドでは少なくとも最初の引数(この場合は検索クエリ)を渡す必要があります。したがって、次のことを試してください。class Recipeend@recipeRecipeRecipe.related_search("QUERY HERE")

于 2011-09-03T17:48:43.403 に答える