我对rails相当陌生,目前正在编写我的第一个应用程序。
我创建了一个搜索我的用户的用户名,但从那时起,我添加了一个标记系统(使用'acts_as_taggable_on‘gem),现在我想在搜索功能中实现它。
我已经尝试过几次了,但是总是会出现一个参数错误(0表示1,2表示1)。
这就是使用标记params来锁定用户对象的方式:
# Find users with any of the specified tags:
User.tagged_with(["awesome", "cool"], :any => true, :wild => true)用户模型
acts_as_ordered_taggable
# Search
def self.search(search)
if search
where(["username LIKE ?", "%#{search}%"])
else
all
end
end
# Search Tags
def self.searchtags(searchtags)
if searchtags
tagged_with(["#{searchtags}"], :any => true, :wild => true)
else
none
end
end用户控制器
def index
@users = User.search(params[:search])
@tagged_users = User.searchtags(params[:searchtags]
end用户索引视图
= form_tag users_path, :method => 'get' do
= text_field_tag :search, params[:search]
= submit_tag "Search"
= form_tag users_path, :method => 'get' do
= text_field_tag :searchtags, params[:searchtags]
= submit_tag "Search Tags"
- @users.each do |user|
= image_tag gravatar_for user if user.use_gravatar == true
= image_tag user.avatar_filename.url if user.use_gravatar == false
%h2= link_to user.username, user
%p= link_to "Favorite", userfavorite_user_path(user, type: "favorite"), method: :get
%p= link_to "Unfavorite", userfavorite_user_path(user, type: "unfavorite"), method: :get
%p= user.tag_list
- @tagged_users.each do |user|
= image_tag gravatar_for user if user.use_gravatar == true
= image_tag user.avatar_filename.url if user.use_gravatar == false
%h2= link_to user.username, user
%p= link_to "Favorite", userfavorite_user_path(user, type: "favorite"), method: :get
%p= link_to "Unfavorite", userfavorite_user_path(user, type: "unfavorite"), method: :get
%p= user.tag_list希望有人能帮我找到解决办法,谢谢。
发布于 2016-09-07 18:16:22
我不太确定,但我以前在这里也见过同样的问题。原因是“acts_as_taggable_on”gem的版本与rails版本不兼容。我想把这个作为评论添加到你的帖子中,但不幸的是,我的帐户仍然不允许这样做。您可以在这里找到解决方案,with(params[:skill]) ArgumentError: wrong number of arguments (given 2, expected 1)
https://stackoverflow.com/questions/39375497
复制相似问题