Отображение имен категорий и подкатегорий в Ruby on Rails

Я хочу отображать точные названия подкатегорий и категорий в моем заголовке. Я перепробовал все и до сих пор не смог найти решение. Я в контроллере подкатегории, когда я нажимаю на название подкатегории, и в контроллере категории, когда я нажимаю на название категории. В соответствии с этим мой заголовок должен отображать соответствующие категории и подкатегории. Это мой контроллер шоу подкатегории.

def show
  @subcategories = Subcategory.friendly.find(params[:id])
  @products = @subcategories.products.where(approved: true)
  @subcategories= Subcategory.all
  @categories= Category.all
  @products = Product.order(:name).page params[:page]
end

Это моя категория контроллер шоу действий

def show
  @categories = Category.friendly.find(params[:id])
  @products = @categories.products.where(approved: true)
  @categories= Category.all
  @subcategories= Subcategory.all
end

и это мой файл show.html.erb, как я пытался отобразить категории и подкатегории.

<li><a href="#" title=""><%= @categories.name%></a></li>
<li><a href="#" title=""><%= @subcategories.name %></a></li>

Это мой фрагмент products.rb соответствующий

class Product < ActiveRecord::Base
  belongs_to :category
  belongs_to :subcategory

в настоящее время отображается как

Категория> Подкатегория, когда я щелкнул по подкатегории. Можете ли вы предложить способ сделать это.

PS: это для Ebay как приложение.

1 ответ

Я не уверен, что именно вы пытаетесь сделать здесь, но я думаю, что понимаю основную структуру того, что вы пытаетесь создать: вы нажимаете на категорию и отображаете все подкатегории для этой категории, а когда вы нажимаете на подкатегории вы получаете все продукты, которые находятся в этой подкатегории.

Если это правда, это может быть выполнено так:

Контроллер категорий:

def index # Give the view all categories to list
  @categories = Category.order("created_at DESC")
end

 def show
   @category = Category.find(params[:id])
 end

Категории просмотра:

#Links to each category
<li><%=link_to(@category.name, category_path)%></li>

Подкатегории Контроллер:

# This will be identical to the products controller snippet,
# but obviously change subcategory to product

def index # Give the view subcategories of the category to list
  @subcategories = Subcategory.order("created_at DESC")
end

 def show # This path will display a single subcategory
   @subcategory = Subcategory.find(params[:id])
 end

Вид подкатегории:

<h3><%= @subcategory.name %></h3> #Display the subcategory name as title
<% @subcategory.products.each do |product| %> # Access each product related to the subcategory
   <li><%=link_to(product.title, post_path(product))%></li> # Create a link, the name of the product, to the individual product
   <li><%= product.description %></li> # Description or whatever you put here.
<% end %>

Если вы делаете то, что я думаю, это, вероятно, то, что вы ищете. Здесь я предполагаю, что каждая подкатегория относится к одной категории, которая может отличаться от того, как вы ее планировали, - это хорошо, но в общем случае именно так настроены сайты. Если вы хотите объединить несколько категорий и подкатегорий, вы можете подумать о тегах, и, возможно, захотите пересмотреть свою структуру.

В любом случае, вы предоставляете контроллеру (в исходном сообщении) слишком много информации. Если у вас есть подкатегория или идентификатор категории, вы можете найти продукты, связанные с ней через @category = Category.find(params[:id]) и т. д. Вы также можете использовать этот продукт для отображения всех категорий / подпрограмм с where, Опять же, я хотел бы предложить простую линейную связь между категорией / подтипом / продуктом, поскольку это делает вещи намного проще и интуитивно понятнее для вас и позволяет вам делать то же, что и я, с подкатегориями и продуктами выше, т.е. subcategory.products.each,

Надеюсь, что это помогает и удачи!

Другие вопросы по тегам