Mostrar nombre en lugar de ID en la tabla de vista has_many

He intentado un par de otras publicaciones similares, pero todavía estoy recibiendo un error.

En el modelo de Posts tengo un campo category_id. Tengo los siguientes modelos:

#Posts model
belongs_to :categories  

#Category model
has_many :posts

En el controlador de índice de Posts tengo:

@categories = @posts.Category.find(:all, :order => 'categoryname')

En la vista tengo:

<% @posts.each do |post| %>
<tr>
<td><%= post.category_id %></td>
<td><%= @categories.categoryname %></td>

<td><%= link_to 'View', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
</tr>
<% end %>

En la segunda columna, estoy tratando de mostrar el nombre de la categoría ("nombre de categoría") de la tabla de Categoría en lugar del ID de categoría de la tabla de publicaciones. Estoy recibiendo un error:

Método no definido `Categoría 'para #ActiveRecord :: Relación: 0x3e1a9b0>

También he intentado:

<td><%= post.categories.categoryname %></td>

Pero consigue el mismo error.

Tanto como:

<td><%= post.category.categoryname %></td>

Cualquier sugerencia sería muy apreciada.

Respuestas a la pregunta(5)

Su respuesta a la pregunta