2015-03-22 5 views
0

Я хочу отображать точные подкатегории и имена категорий в моем заголовке. Я пробовал все, и все еще не смог найти решение. Im в контроллере подкатегории, когда я нажимаю имя подкатегории и контроллер категории, когда я вызываю имя категории. В соответствии с этим мой заголовок должен отображать соответствующие категории и подкатегории. Это мое действие подкатегории контроллера.Отображение имен категорий и подкатегорий в 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

Почему вы делаете что-то вроде присвоения значения '@products =' дважды подряд? Это не имеет никакого смысла. – Beartech

+0

О, я думаю, что это большая ошибка. Я пытаюсь отобразить категории. Делаю все .. спасибо, что заметили это. PS: Я новичок. – thilanka1989

+0

У вашего кода много проблем. Также я не понимаю, что у вас есть, что на самом деле работает. Можете ли вы опубликовать изображение того, что выглядит на самом деле? И тогда, может быть, лучшее описание того, на что вы ХОТИТЕ это выглядеть? – Beartech

ответ

0

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

Если это так, то это может быть достигнуто, как это:

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

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.

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

+0

Спасибо за помощь, и это мне очень помогло. Теперь отображаются подкатегории, но категория отображения не работает. Я следую этому ответу, и еще раз спасибо. ! – thilanka1989

+0

Рад это слышать! Очевидно, я не могу сказать, какова ваша проблема с категориями, не видя кода, но если бы я должен был догадаться, я бы сказал, что это ваши ассоциации. Если вы планируете делать что-то похожее на то, что я написал выше, возможно, вам не хватает ассоциации «имеет много сквозных», чтобы связать категории с продуктами. Если вы настраиваете продукты как принадлежащие кошкам и подкатам, проблема может быть решена путем сопоставления продуктов как с полиморфной ассоциацией, но это выходит за рамки этого небольшого поля комментариев. Удачи снова! :) –

+0

Моя проблема решена. Спасибо за помощь. Проблема заключалась в демонстрации действий, и я ее исправил. Я использовал «@subcategory» и «@category» вместо «@subcategories» и «@categories» и «@categories» - Category.all и «@subcategories = Subcategory.all» вместо кодов до. (Для соответствующих места). И я неправильно их назвал. Я назвал «@ subcategory.category.name» для отображения названия категории и «@ subcategory.name», чтобы отобразить название подкатегории в файле подкатегории. И я использовал «@ category.name» для отображения категории в категории show file. – thilanka1989

Смежные вопросы