Ich habe eine Suchmethode in einer Schiene App ich schreibe. Hier ist ein Auszug.Aufruf an eine Sammlung Weg hält eine ID
Die Absicht ist Regex zu verwenden, um alle Elemente mit einer Beschreibung zu vergleichen, die einer Suchabfrage entspricht. Anschließend werden alle übereinstimmenden Element-IDs als Zeichenfolge an eine andere Seite übergeben. (Dies alles findet in einem Such-Controller statt).
Der Item-Controller fängt dann die ID-Zeichenfolge ab, teilt sie in ein Array auf und zeigt eine Liste der übereinstimmenden Objekte an.
Ich bekomme derzeit jedoch ein Problem, wobei Rails an die redirect_to-Anweisung einen anderen Parameter anfügt (welcher gemäß der Ablaufverfolgung {"id" => "search"} ist) und dann nach einem Artikel mit ID sucht. " :. a1" Es kann offensichtlich finden nicht ein (ids alle numerisch sind) und damit die App abstürzt kann heraus jemand arbeiten, warum dies der Fall ist
IN dER SUCHE CONTROLLER
rquery = Regexp.new(Regexp.escape(@query), Regexp::IGNORECASE)
item_list = []
Item.all.each{|item| item_list << item if rquery.match(item.shortdescr)}
unless item_list == nil
ids = ""
maybe_matters.each do |matter|
ids += item.id.to_s + " "
end
redirect_to search_items_path(ids: ids)
return
end
.? IN DER ELEMENT CONTROLLER
def search
authorize! :show, Item
@id = params[:ids].split
@search = []
@id.each do |id|
@search << id.to_i
end
@items = Item.accessible_by(current_ability).where(id: @search).order('completed desc nulls last').page params[:page]
end
EDIT
Im Fall ist es relevant, das ist (ein sehr kleiner) Teil der Routen-Datei:
resources :items, only: [:index, :show] do
collection do
post :search
end
end
Der POST zu GET Änderung behoben es; Vielen Dank –