Searchlogic: как мне определить область имен, чтобы я мог использовать ИЛИ на связанной модели? - PullRequest
1 голос
/ 08 сентября 2011

Итак, я нашел это: Условие Searchlogic ИЛИ приводит к неопределенному методу

Но это работает только для полей в модели, которую вы ищете напрямую.У меня есть модель подписки, но я хочу выполнить поиск по именам учетных записей различных подписок ИЛИ их other_field, например.

по вышеуказанной ссылке (и измененной), я хотел бы иметь возможность сделать что-то подобноена это:

  named_scope :account_name_full_domain_like, lambda{ |name|{
     :conditions => ["accounts.name LIKE ? OR accounts.full_domain LIKE ?", "%" + name + "%", "%" + name + "%"],
     :joins => "LEFT JOIN `accounts` ON `accounts`.id = `subscriptions`.account_id"
    }}

но теперь я получаю сообщение об ошибке:

27:     <% form_for @search do |f| %>  

undefined method `subscription_subscription_path' for #<ActionView::Base:0x11061dbc0>

РЕДАКТИРОВАТЬ: понял: пришлось включить .search в мой вызов для назначения @searchвар

@search = Subscription.search.account_name_full_domain_like(term)

1 Ответ

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

Если ваша именованная область соответствует модели подписки, вы будете возвращать записи подписки. Ваше состояние и вступление, кажется, действительны. Я не уверен, каково отношение этой именованной области к переменной экземпляра @search, которую вы, похоже, используете в своем представлении.

Это путь ' subscription_subscription_path ', куда вы ожидали отправить эту форму? Если это так, запустите «rake маршруты» и убедитесь, что у вас есть путь с именем «subscription_subscription_path».

Если вы хотите отправить альтернативный путь, вы можете указать URL для отправки в form_for, выполнив что-то вроде следующего:

<% form_for @search, :url => subscription_path(@search) %>

Более подробную информацию об указании URL для form_for можно найти здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for

...