Отображение имен категорий и подкатегорий в 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
,
Надеюсь, что это помогает и удачи!