Помимо любой проблемы, которая у вас есть ... ИМХО, код выглядит довольно компрометирующим.
Ниже приведены вещи, которые не следует делать такими, какими они являются в настоящее время:
- Создание URL-адресов вручную, например, href = "/ index / category / <% = h subcategory.id%>" Но я не могу много сказать об этом, чтобы исправить это, не зная, в какой версии Rails вы находитесь, и не видя вашего routes.rb
- Неверный код контроллера
- Код модели также нуждается в улучшении
Модели должны выглядеть так:
class Subcategory < ActiveRecord::Base
belongs_to :category
has_many :events, :order => "created_at desc"
end
class Event < ActiveRecord::Base
belongs_to :subcategory
end
class Category < ActiveRecord::Base
has_many :subcategories, :order => "name"
end
EventsController должен быть таким:
def index
@categories = Category.all(:order => "name", :include => {:subcategories => [:events]})
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @categories }
end
end
И ваш взгляд должен выглядеть так:
<% unless @categories.empty? %>
<% @categories.each do |category| %>
<li>
<a href="categories/<%= category.id %>"><%=h category.name %></a>
<ul>
<% category.subcategories.each do |subcategory| %>
<li>
<a href="/index/category/<%=h subcategory.id %>"><%=h subcategory.name %></a>
</li>
<% end %>
</ul>
</li>
<% end %>
<% else %>
Sorry, no events found!
<% end %>
Надеюсь, этот код также исправит ваши ошибки.
Пожалуйста, попробуйте.
ПРИМЕЧАНИЕ. В представлениях требуется больше улучшений, в зависимости от вашей версии Rails и вашего rout.rb ... вам следует использовать методы path / url, такие как category_path (category) и т. Д.