Comment la recherche dans ActiveScAfold Rails 3
-
16-11-2019 - |
Question
Ma recherche normale dans la page Liste ActiveScafold ne fonctionne pas.
J'ai la table listLocations qui a des champs id | list_id | wiki_location_id. J'ai suivi des relations modèles
class List < ActiveRecord::Base
validates_presence_of :name
has_many :list_locations, :dependent => :destroy
end
class WikiLocation < ActiveRecord::Base
has_many :list_locations, :dependent => :destroy
end
class ListLocation < ActiveRecord::Base
belongs_to :list
belongs_to :wiki_location
def wiki_location_title
WikiLocation.find(wiki_location_id).title if wiki_location_id
end
def wiki_location_title= (title)
wiki_location = WikiLocation.find_by_title(title)
self.wiki_location_id = wiki_location.id if wiki_location
end
end
mon contrôleur pour ceux-ci sont
class Admin::ListsController < Admin::AdminController
active_scaffold :list do |conf|
conf.columns = [:name, :list_order, :enabled]
conf.columns[:enabled].form_ui = :checkbox
conf.columns[:enabled].inplace_edit = true
list.sorting = {:list_order => 'asc'}
end
end
class Admin::WikiLocationsController < Admin::AdminController
active_scaffold :wiki_location do |conf|
conf.columns = [:title, :street]
list.per_page = 10
end
end
class Admin::ListLocationsController < Admin::AdminController
active_scaffold :list_location do |conf|
conf.columns = [:list, :wiki_location]
conf.columns[:list].form_ui = :select
conf.search.columns << :list
end
end
J'ai aussi mis en œuvre la recherche de recherche que vous tapez (Sayt) pour le champ Wiki_Location dans la table List_Locations
Mes vues ressemblent à
J'ai implémenté la fonctionnalité automatique en suivant les instructions du lien spécifié ci-dessous ActiveScAfold Autocomplete
Maintenant, mon problème est quand j'utilise la recherche normale dans ma page de liste de Active Scanfold, je ne reçois aucun résultat
La requête que j'ai eu de ma console est
SELECT `list_locations`.`id` AS t0_r0, `list_locations`.`list_id` AS t0_r1,
`list_locations`.`wiki_location_id` AS t0_r2, `list_locations`.`created_at` AS t0_r3,
`list_locations`.`updated_at` AS t0_r4, `lists`.`id` AS t1_r0, `lists`.`name` AS t1_r1,
`lists`.`list_order` AS t1_r2, `lists`.`enabled` AS t1_r3, `lists`.`created_at` AS
t1_r4, `lists`.`updated_at` AS t1_r5 FROM `list_locations` LEFT OUTER JOIN `lists` ON
`lists`.`id` = `list_locations`.`list_id` WHERE ((((`lists`.`id` LIKE '%museum%'))))
ORDER BY `list_locations`.`id` ASC LIMIT 15 OFFSET 0
Il ressemble à sa recherche sur la liste.Id sur le champ au lieu de list.name
Pourquoi est-ce comme ça? Comment puis-je en faire la liste de recherche. Nom. J'ai aussi besoin de rechercher une colonne wiki_locations.title aussi. Comment cela peut-il être fait. S'il vous plaît aider.
La solution
Try to set:
conf.columns[:list].search_sql = 'list.name'