I'm using and it seems to be working. The only problem is lets say I have a field performing an autoplete on all post titles, but I want it to only show titles of posts the user has created.
Is there a way to do something like this? I.e. a find_by or something?
Thanks!
-Elliot
EDIT
it says in the documentation:
If you want to display a different version of what you're looking for, you can use the :display_value option.
This options receives a method name as the parameter, and that method will be called on the instance when displaying the results.
class Brand < ActiveRecord::Base
def funky_method
"#{self.name}.camelize"
end
end
class ProductsController < Admin::BaseController
autoplete :brand, :name, :display_value => :funky_method
end
In the example above, you will search by name, but the autoplete list will display the result of funky_method
I feel like this could be used to make what I'm trying to acplish happen, but I have no idea where to begin?
I'm using https://github./crowdint/rails3-jquery-autoplete and it seems to be working. The only problem is lets say I have a field performing an autoplete on all post titles, but I want it to only show titles of posts the user has created.
Is there a way to do something like this? I.e. a find_by or something?
Thanks!
-Elliot
EDIT
it says in the documentation:
If you want to display a different version of what you're looking for, you can use the :display_value option.
This options receives a method name as the parameter, and that method will be called on the instance when displaying the results.
class Brand < ActiveRecord::Base
def funky_method
"#{self.name}.camelize"
end
end
class ProductsController < Admin::BaseController
autoplete :brand, :name, :display_value => :funky_method
end
In the example above, you will search by name, but the autoplete list will display the result of funky_method
I feel like this could be used to make what I'm trying to acplish happen, but I have no idea where to begin?
Share Improve this question edited Feb 1, 2011 at 4:30 Elliot asked Feb 1, 2011 at 4:16 ElliotElliot 13.8k29 gold badges83 silver badges120 bronze badges3 Answers
Reset to default 7You can override get_autoplete_items
, but first use super to call the original get_autoplete_items
method, and then filter the results by current_user.id (or post.user.id if the owner of the post is not the current user)
def get_autoplete_items(parameters)
items = super(parameters)
items = items.where(:user_id => current_user.id)
end
This way you can still all the other options that e with the gem. This should be done in your controller by the way.
Another answer suggested the :scope
option. I looked into that, but it is not the way to go in this case, you don't want to add "current_user" and things like that to your models.
You should overwrite the method get_item, for example in these case I'm filtering the list of users to consider to just the last one:
class UsersController < ApplicationController
autoplete :user, :email, :full => true
def index
@users = User.all
end
def get_items(parameters)
[User.last]
end
I think that one of the last mits, changed the method (#get_items) name. Check you version of autoplete.rb file.
Check it here: https://github./crowdint/rails3-jquery-autoplete/mit/b3c18ac92ced2932ac6e9d17237343b512d2144d#L1R84.
Even though I havent personally tested, I think normal scope method in rails3 should work. As after all scope is also a method same as "funky_method"
write a scope
in your model
scope :funky_method, lambda { |param1| :conditions => {:column = param1} }
and in your controller
autoplete :brand, :name, :display_value => :funky_method
should work, try and see..
cheers
sameera