所以,我发现了这个:Searchlogic OR condition results in undefined method
但这仅适用于您正在直接搜索的模型上的字段。 我有一个suscription模型,但我想搜索不同订阅的帐户名称或其他字段,例如。
从上面的链接(并修改)我希望能够做类似的事情:
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)
答案 0 :(得分:1)
如果您的指定范围在您的订阅模型上,您将返回订阅记录。你的病情和加入似乎是有效的。我不确定这个命名范围与您在视图中使用的实例变量@search的关系是什么。
您希望将此表单提交到“ subscription_subscription_path ”路径吗?如果是,请运行“rake routes”,并确保您有一个名为“subscription_subscription_path”的路径。
如果您想提交到备用路径,可以通过执行以下操作,在form_for中指定要提交的网址:
<% form_for @search, :url => subscription_path(@search) %>
有关指定form_for网址的详细信息,请访问:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for