1

所以,我发现了这个:Searchlogic OR condition results in undefined method

但这仅适用于您直接搜索的模型上的字段。我有一个订阅模型,但我想搜索不同订阅的帐户名称或它们的 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 var

@search = Subscription.search.account_name_full_domain_like(term)
4

1 回答 1

1

如果您的命名范围在您的订阅模型上,您将返回订阅记录。您的条件和加入似乎是有效的。我不确定这个命名范围与您似乎在视图中使用的实例变量 @search 有什么关系。

您希望将此表单提交到的路径是“ subscription_subscription_path ”吗?如果是这样,请运行“rake routes”,并确保您有一个名为“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

于 2011-09-08T15:12:01.557 回答