Comme condition préalable, il est supposé que l'installation d'Active Hash et les paramètres autour du modèle / de la base de données sont terminés.
Puisque le modèle Item a category_id, définissez le routage comme suit
routes.rb
get '/items/category/:id', to: "items#category"
Faites un lien.
html.erb
link_to 'hoge', '/items/category/1'
link_to 'fuga', '/items/category/2'
link_to 'piyo', '/items/category/3'
Au fait, le modèle de catégorie est défini comme ceci
models/category.rb
class Category < ActiveHash::Base
self.data = [
{ id: 1, name: 'hoge' },
{ id: 2, name: 'fuga' },
{ id: 3, name: 'piyo' }
]
end
catégorie Définit une action.
items_controller.rb
def category
@item = Item.find_by(category_id: params[:id])
@items = Item.where(category_id: params[:id]).order('created_at DESC')
end
@Item est défini pour afficher le nom de la catégorie sur la page de liste des catégories, et @items est défini pour se développer avec chacun.
Créez category.html.erb sous les éléments.
ruby:items/category.html.erb
#Affichage du nom de la catégorie
@item.category.name
#Développez le contenu de la catégorie
@items.each do |item|
~ Omis ~
end
Je pense que c'était beaucoup plus facile d'écrire en passant chaque id avec link_to. S'il vous plaît laissez-moi savoir s'il existe une meilleure façon!
✔︎
Recommended Posts