Rails 4搜索引擎:多个参数

时间:2016-09-07 16:53:37

标签: ruby-on-rails ruby ruby-on-rails-4 controller rubygems

我对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

希望有人能帮我找到解决方案,谢谢。

1 个答案:

答案 0 :(得分:2)

我不太确定,但我之前见过同样的问题。原因是' acts_as_taggable_on'的版本不可通过。带有rails版本的宝石。我想将此作为评论添加到您的帖子中,但不幸的是,我的帐户仍然不允许这样做。您可以在agged_with(params[:skill]) ArgumentError: wrong number of arguments (given 2, expected 1)

找到解决方案