簡體   English   中英

Rails:如何在 ruby​​ on rails 中顯示類別和子類別

[英]Rails: How to display categories and subcategories in ruby on rails

我想在 ruby​​ on rails 中顯示categoriessubcategories

我收到此錯誤

在此處輸入圖片說明

這是我的categories表,我想從中顯示類別和子類別。

在此處輸入圖片說明

我在category.rb代碼

class Category < ActiveRecord::Base
    belongs_to :category
    has_many :children, :dependent => :destroy, :class_name => 'Category'
end

category_controller.rb

class CategoriesController < ApplicationController
    def index
        @categories = Category.all
    end
    def new
        @category = Category.new
    end
    def edit
        @category = Category.find(params[:id])
    end
    def create
        @category = Category.new(params[:category].permit!)
        if @category.save
            redirect_to categories_url
        else
            render :new
        end
    end
    def update
        @category = Category.find(params[:id])
        if @category.update_attributes(params[:category].permit!)
            redirect_to categories_url
        else
            render :edit
        end
    end
    def destroy
        Category.destroy(params[:id])
        redirect_to categories_url
    end
end

查看/類別/index.html.erb

    <%= form_for @category do |f| %>

        <%= f.text_field :name %>
        <%= f.select :category_id, options_from_collection_for_select(Category.all, :id, :name, @category.category_id), :include_blank => true %>
        <%= f.submit %>
    <% end %>`

錯誤是

在此處輸入圖片說明

路由文件

Rails.application.routes.draw do
  devise_for :organisations, :controllers => {:registrations => "organisations/registrations"}
  devise_for :coaches, :controllers => {:registrations => "coaches/registrations"}
  devise_for :students, :controllers => {:registrations => "students/registrations"}
  devise_for :admins
  root to: "home#index"
  devise_for :users, path: 'users', path_names: {sign_in: 'sign-in', sign_out: 'sign-out', confirmation: 'verification'}
  namespace :coaches do
    resources :study_materials
  end
  namespace :coaches do
    resources :programmes
  end
  namespace :admin do
    resources :coaches
  end
  get 'programmes', to: 'programmes#index', as: 'programmes'
  get 'programmes/*hierarchy/:program_slug', to: 'programmes#show', as: 'programme'
  get 'programmes/*hierarchy', to: 'programmes#category', as: 'categories'
  get 'start-coaching', to: 'home#start_coaching'
 resources :categories
end

對於您的 nil 類,您必須在def index方法中添加它

def index
  @categories = Category.where("parent_id IS NULL")
  @category = Category.new
end

def get_subscategories
  @subscategories = Category.where(:parent_id => params[:parent_id])
  render :partial => "subscategories", :object => @subscategories
end

索引.html

<%= select_tag "parent_category", options_from_collection_for_select(@categories, "id", "name"), :prompt => "Select a parent category", :onchange => "update_subscategories_div(this.value)" %>
<div id="versionsDiv">
</div>

_subscategories.html.erb

<%= f.select :parent_id, options_from_collection_for_select(@subscategories, "id", "name"), :prompt => "Select a parent category" %>

路由文件

match "/get_subscategories" => "categories#get_subscategories"

應用程序.js

function update_subscategories_div(parent_id) {  
  jQuery.ajax({
    url: "/get_subscategories",
    type: "GET",
    data: {"parent_id" : parent_id},
    dataType: "html"
    success: function(data) {
      jQuery("#versionsDiv").html(data);
    }
  });
}

這是您的參考文章how-categories-sub-categories-in-tree-hierarchy-inside-a-dropdown

作為index.html.erbformindex方法應該包含@category = Category.new

def index
  @categories = Category.all
  @category = Category.new
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM