J'ai trois tables, dont l'un est un grand nombre à plusieurs table de relation:Comment afficher une liste d'éléments à l'aide d'une table de jointure
class Category < ApplicationRecord
has_many :categorizations
has_many :products, :through => :categorizations
end
class Product < ApplicationRecord
has_many :categorizations, dependent: :destroy
has_many :categories, :through => :categorizations
end
et la table catégorisations:
class Categorization < ApplicationRecord
belongs_to :category
belongs_to :product
end
Je
sauvé les catégories ids dans un tableau:
def product_params
params.require(:product).permit(:name_product, :hallmark, :description, :image_url, :price, category_ids:[])
end
en new.html.erb:
<% Category.all.each do |category| %>
<label>
<%= check_box_tag "product[category_ids][]", category.id, field.object.categories.include?(Category) %>
<%= category.name_category %>
</label>
<%end%>
Je ne peux pas afficher les noms des catégories. Dans show.html.erb j'ai tout essayé, mais il n'affiche que l'identifiant des catégories auxquelles appartient le produit.
Comment afficher les noms des catégories? Dans la base de données, je peux faire un JOIN
, mais dans Ruby on Rails c'est difficile.
Qu'est-ce qu'un secteur? Votre code 'new.html.erb' n'a rien à voir avec le reste de l'information contenue dans la question. – infiniteRefactor
"Dans la base de données, je peux faire un JOIN ...". Oui, et c'est probablement la bonne chose à faire. Vous voulez éviter de déplacer beaucoup de données et avoir Ruby ou Rails faire le gros du travail lorsque le DBM est capable de faire le travail de tamisage et de crunching. J'ai vu des tâches qui prenaient plusieurs secondes pour que le mouvement des données et le crunching dans Ruby prennent des temps inférieurs à la seconde pour que le DBM recherche, tamise et croque puis retourne seulement les enregistrements nécessaires. C'est payant dans la réduction de la charge du réseau et de la charge du processeur sur l'application ou le serveur Web. –