Can you use meta_search from diffrent models?

Im in love with meta_search, a great gem but i have a question: when
using it in controllers wich has the same name as the model (Photo =>
PhotosController) it workes like a charm. But i have a
PeoplesController for handling accounts, profiles etc - and if i try
to use it there i get an error of:

NoMethodError in Peoples#index
Showing /index.html.erb where line #33 raised:
undefined method `screen_name_contains’ for #<ActiveRecord::Relation:
0x10676f2a8>

Controller:

def index
@search = Account.search(params[:search])
@users = @search.where(:status =>
“active”).page(params[:page]).per(24)
end

Any advice ?

On Tue, May 24, 2011 at 9:35 AM, Niklas N. [email protected]
wrote:

I think you need to put the model name — so something like:

photo_user_screen_name

Where you are telling metasearch in a similar way that you would to AR
about
the association to your current model, then the associated models field.

Thanks for your reply - sadly i cant get it working.

:routes =>
match “/peoples” => “peoples#index”, :as => “peoples”

Both accounts_ and _account results in
undefined method `account(s)_screen_name_contains’ for
#ActiveRecord::Relation:0x106ae3da8

Can i set up the relation in the controller ?

On Tue, May 24, 2011 at 10:54 AM, Niklas N.
[email protected]wrote:

Should not be a problem. First, have you seen the section ‘Multi-level
associations’ on https://github.com/ernie/meta_search ?

If you still have trouble, probably easiest is post your current meta
search
code and the models you are trying to associate, and their associated
schema
(fields).

I think i have mislead you with the subject line of this post.
Its not that Peoples are a releation of Accounts. Peoples are just a
Controller
to move the viewing parts account from AccountController. So the
problem is not how to do a
relation between two models; i need to get meta_search understand that
it should search the
Account (and then models associated to Account). I think i get the
error because it cant find
any model to search (which is correct; people doesn’t exists.

/Niklas

And no way of letting the PeopleController letting it know that it
should user Accounts ?

/Niklas.

On Tue, May 24, 2011 at 1:55 PM, Niklas N. [email protected]
wrote:

And no way of letting the PeopleController letting it know that it
should user Accounts ?

I am confused now what you are doing.

If you want to search accounts you should be able (in any controller)
do:

@search = Account.seaarch(params[:search])
And then use the results

On Tue, May 24, 2011 at 1:14 PM, Niklas N. [email protected]
wrote:

Right… metasearch is pretty magical but does not have psychic
abilities :slight_smile:

On Tue, May 24, 2011 at 3:05 PM, Niklas N. [email protected]
wrote:

class Account < ActiveRecord::Base
<% end -%>

So I am assuming your Account model has a screen_name attribute,
correct?
Can you post here the params which your controller is receiving when you
post this form? I am assuming that there is probably some conflict in
the
params where you might have something like
params[:people][:screen_name]…
and of course metasearch is not going to find it… you will need to
make
the input params to be what meta search would expect… and ideally
make
your form based on the account model like:

@account = Account.new # just used for the search
form_for @account
f.text_field :screen_name

Otherwise you can do what I have done in the past which is to create a
form
however you want and then marry the params to metasearch in the model.
But I
would not recommend this until you understand what is going on.

This is what i got:

class PeoplesController < ApplicationController
def index
@search = Account.search(params[:search])
@users = @search.where(:status =>
“active”).page(params[:page]).per(24)
end
end

class Account < ActiveRecord::Base

screen_name :string(255)


end

[views/peoples/index.html.erb]
<% simple_form_for(:search, :url => peoples_path, :html => {:method
=> :get}) do |f| -%>
<%= f.input :screen_name_contains %>
<%= f.button :submit %>
<% end -%>

But this gets me:
NoMethodError in Peoples#index
Showing /Users/niklasnson/mugcube_app/mugcube/app/views/peoples/
index.html.erb where line #31 raised:
undefined method `screen_name_contains’ for #<ActiveRecord::Relation:
0x107346c48>

The other two models/controllers i have been using was both the same
(photo and PhotoController and casting and CastingController) so i
thought that
the error was in that Account was the model and then a
PeoplesController. But after your last message i think this should not
matter ?

Grateful for all help,
/Niklas.

I get the error
NoMethodError in Peoples#index
Showing /Users/niklasnson/mugcube_app/mugcube/app/views/peoples/
index.html.erb where line #32 raised:
undefined method `screen_name_contains’ for #Account:0x1066e2ab0

Directly when i try to acccess the page so i cant post the form.
Tryed

<% @account = Account.new # just used for the search %>
<% simple_form_for(:search, @account, :html => {:method => :get}) do |
f| -%>
<%= f.input :screen_name_contains %>
<%= f.button :submit %>
<% end -%>

But that resulted in the same error.

On Wed, May 25, 2011 at 12:08 AM, Niklas N.
[email protected]wrote:

   <% simple_form_for(:search, @account, :html => {:method => :get}) do

|
f| -%>
<%= f.input :screen_name_contains %>
<%= f.button :submit %>
<% end -%>

But that resulted in the same error.

Again please copy the params from the server console on the post. Also,
try
using account_screen_name_contains… maybe.

On Wed, May 25, 2011 at 10:08 AM, David K.
[email protected]wrote:

Directly when i try to acccess the page so i cant post the form.
But that resulted in the same error.

Again please copy the params from the server console on the post. Also, try
using account_screen_name_contains… maybe.

One other idea is to simplify, so start in the account controller and
model
and do a simple search following exactly the code on the metasearch
github.
Once you get that working right get more creative, and go for what you
are
trying. In the end this will save you time and at least you get on the
right
path.

Recently I checked out meta_search and tried implemeting
I am using Ruby: 1.9.2, Rails: 3.0.6 and RubyGem: 1.6.23
I have product model and its columns are name, price…etc
Configured meta_where and meta_search in GemFile

index.html.erb
<%= form_for :search , @search, :url => products_path, :html => {:method
=> ‘get’} do |f| %>


<%= f.label :name_contains %>
<%= f.text_field :name_contains %>


<%= f.submit “Submit”%>
<% end %>
<%=render 'products'%>

def index
@search = Product.search(params[:search])
@products = @search.all
end

I am getting “undefined method name_contains for
#ActiveRecord::Relation:0x94749fc” error when I run through browser
for index page

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs