Zur Erinnerung, ich wollte eine "Spalte mit einer Hierarchie" implementieren, als ich eine Mode-EC-Site durch persönliche Produktion erstellte, und ich lernte aus einem kleinen Stolperstein, wenn ich ** Abstammung ** verwendete, die genau das realisiert. Ich werde es verlassen.
** Außerdem ist dieser Artikel kein Verfahrenshandbuch, sondern eine Einführung in die Fehler, die Anfänger machen! ** ** **
Ich möchte das folgende dynamische Auswahlfeld mit Abstammung ** auch beim Bearbeiten ** aktivieren.
Es wird davon ausgegangen, dass der Controller die Aktion zum Durchsuchen der untergeordneten Hierarchie wie unten gezeigt definiert. Ajax definiert auch search_child fest.
(controllers/items_controller.rb)
(Kürzung)
def edit
child_category = @item.category
@category_parent_ary = []
Category.where(ancestry: nil).each do |parent|
@category_parent_ary << parent
end
@category_children_ary = []
Category.where(ancestry: child_category.ancestry).each do |children|
@category_children_ary << children
end
end
def search_child
respond_to do |format|
format.html
format.json do
@children = Category.find(params[:parent_id]).children
end
end
end
(Kürzung)
end
(Kürzung)
$("#parent-form").on("change", function() {
var parentValue = document.getElementById("parent-form").value;
if (parentValue != "---") {
$('#category__box--children').remove();
$.ajax({
url : 'search_child',
type : 'GET',
data : { parent_id: parentValue },
dataType: 'json'
})
(Kürzung)
Ich habe es implementiert und neu registriert, und ich dachte, dass es kein Problem geben würde, also habe ich es eingefroren.
Es ist sehr einfach, ich habe gerade das Routing hinzugefügt.
(config/routes.rb)
Rails.application.routes.draw do
(Kürzung)
resources :shops, only: [:new, :create, :show, :edit, :update, :destroy] do
resources :items, only: [:new, :create, :edit, :update, :destroy] do
collection do
get "search_child", defaults: { format: "json" }
end
#####↓ Hier hinzufügen ↓ #####
member do
get "search_child", defaults: { format: "json" }
end
#####↑ Hier hinzufügen ↑ #####
end
(Kürzung)
Wenn der Implementierungsbereich einer Funktion ansteigt, neige ich dazu, meine Füße hochzuschaufeln, und ich habe mich nur auf den Inhalt des Codes konzentriert, den ich für diesen Fehler geschrieben habe, und ich habe einige Zeit damit verbracht. ..
Ich bedauere, dass es wichtig ist, den Codefluss zu verstehen, bis er wieder funktioniert, und die Zweifel zu betrachten!
Recommended Posts