[英]Rails: How to display categories and subcategories in ruby on rails
我想在 ruby on rails 中顯示categories
和subcategories
我收到此錯誤
這是我的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.erb
的form
, index
方法應該包含@category = Category.new
def index
@categories = Category.all
@category = Category.new
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.