Статьи по теме в Ruby on Rails - PullRequest
       17

Статьи по теме в Ruby on Rails

0 голосов
/ 03 сентября 2011

Я пытаюсь реализовать соответствующую статью на текущей странице пользователя. Я не использую солнечное пятно или что-то подобное. Я пробовал этот код от Ученны Окафор, но я получаю ошибку.

В модели у меня есть

    #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]

1 Ответ

1 голос
/ 03 сентября 2011

Похоже, вы путаете метод экземпляра с методом класса. Я не знаю, как вы создаете @recipe, но попробуйте удалить self в self.related_search и self.related_search_conditions.

EDIT:

Хорошо, я думаю, что понимаю немного больше. Во-первых, я предполагаю, что эти методы в вашей recipe.rb модели, и вы окружили их class Recipe и end. Во-вторых, @recipe не имеет определения. Так что вместо этого используйте Recipe для ссылки на класс. Наконец, ваши методы требуют, чтобы был передан хотя бы первый аргумент, в данном случае это поисковый запрос. Поэтому попробуйте следующее: Recipe.related_search("QUERY HERE").

...