2016-09-07 3 views
0

Ich bin ziemlich neu zu Schienen und im Moment Codierung meiner ersten App.
Ich habe eine Suche nach den Benutzernamen meiner Benutzer erstellt, aber seitdem habe ich ein Tagging-System hinzugefügt (mit 'acts_as_taggable_on' gem), das ich jetzt in der Suchfunktion implementieren möchte.Rails 4 Search Engine: Mehrere Params

Ich habe es schon mehrmals versucht, aber immer einen Argumentfehler (entweder 0 für 1 oder 2 für 1).

Das ist, wie Sie die Benutzerobjekte mit dem Tag params Ziel:

# Find users with any of the specified tags: 
User.tagged_with(["awesome", "cool"], :any => true, :wild => true) 

Benutzermodell

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 

Benutzer-Controller

def index 
    @users = User.search(params[:search]) 
    @tagged_users = User.searchtags(params[:searchtags] 
end 

Benutzer-Übersicht

= 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 

Hoffe, dass jemand mir helfen kann, indem ich eine Lösung finde, danke.

Antwort

2

Ich bin mir nicht ganz sicher, aber ich habe die gleichen Probleme schon einmal gesehen. Der Grund war die Unantastbarkeit der Versionen von 'acts_as_taggable_on' gem mit der Rails-Version. Ich wollte dies als Kommentar zu deinem Post hinzufügen, aber leider ist es für meinen Account immer noch nicht erlaubt. Sie können hier Lösungen finden agged_with(params[:skill]) ArgumentError: wrong number of arguments (given 2, expected 1)

+0

Ich habe eine funktionierende Lösung. Deine Antwort hat mir geholfen! – Gugubaight

+0

Sonderbare Sache ist, wenn: wenn ich 'elsif searchtags none' zu' self.search' hinzufüge, erscheint der Argumentfehler (0 für 1) wieder ... – Gugubaight

+0

Ich postete dies als eine Frage hier: http://stackoverflow.com/questions/39388648/rails-4-error-argumentterror-falsche-Anzahl-der-Argumente – Gugubaight