Ich habe zwei Tabellen, die ich mit blog und post_categories in Beziehung setze. Unten ist das Schema:
create_table "blogs", force: :cascade do |t|
t.string "title"
t.text "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "slug"
t.integer "status", default: 0
t.bigint "post_category_id"
t.index ["post_category_id"], name: "index_blogs_on_post_category_id"
t.index ["slug"], name: "index_blogs_on_slug", unique: true
end
create_table "post_categories", force: :cascade do |t|
t.string "name"
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Jetzt versuche ich, den Kategorienamen anstelle der Kategorie-ID in meiner Blog-Datei index.html.erb anzuzeigen. Ich habe folgendes getan, aber nicht funktioniert:
<tbody>
<% @blogs.each do |blog| %>
<tr>
<td><%= blog.title %></td>
<td><%= blog.body %></td>
<% PostCategory.all.each do |c| %>
<% if c.id == blog.post_category %>
<td><%= c.name %>
<% end %>
<td><%= link_to 'Show', blog %></td>
<td><%= link_to 'Edit', edit_blog_path(blog) %></td>
<td><%= link_to 'Destroy', blog, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
Hinweis: Ich habe auch versucht, direkt über darauf zuzugreifen, <td><%= blog.post_category.name %></td>
aber es hat immer noch nicht funktioniert.
Irgendeine Idee, wie ich den Kategorienamen anstelle der zugeordneten Kategorie-ID anzeigen kann?
Gemäß dem von Ihnen angegebenen Schema wird darauf hingewiesen, dass das PostCategory-Objekt viele Blog-Objekte enthält
Modelländerungen,
class PostCategory < ApplicationRecord
has_many :blogs
end
class Blog < ApplicationRecord
belongs_to :post_category
end
Änderungen anzeigen,
<tbody>
<% @blogs.each do |blog| %>
<tr>
<td><%= blog.title %></td>
<td><%= blog.body %></td>
<td><%= blog.post_category.name rescue 'No post category present for this blog' %></td>
<td><%= link_to 'Show', blog %></td>
<td><%= link_to 'Edit', edit_blog_path(blog) %></td>
<td><%= link_to 'Destroy', blog, method: :delete, data: { confirm: 'Are you sure?'} %></td>
</tr>
<% end %>
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen