簡體   English   中英

Searchlogic:如何定義命名范圍,以便可以在關聯的模型上使用OR?

[英]Searchlogic: how do I define a namedscope so that I can use OR on an associated model?

所以,我發現了這一點: Searchlogic OR條件導致未定義的方法

但這僅適用於您直接搜索的模型上的字段。 我有一個訂閱模型,但是我想搜索不同訂閱的帳戶名或它們的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 var的調用中必須包含.search

@search = Subscription.search.account_name_full_domain_like(term)

如果您的訂閱模型上有命名范圍,則將返回訂閱記錄。 您的條件和加入似乎有效。 我不確定此命名范圍與您在視圖中似乎正在使用的實例變量@search之間的關系。

您希望將此表單提交到的路徑“ subscription_subscription_path ”嗎? 如果是這樣,請運行“ rake route”,並確保您有一個名為“ subscription_subscription_path”的路徑。

如果要提交到備用路徑,則可以通過執行以下操作來在form_for中指定要提交的URL:

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

有關為form_for指定URL的更多信息,可以在這里找到: http : //api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM