Мой проект состоит из трех основных частей к нему:Как сделать объекты менее грязными?
- Страницы (аналогичные изделия)
- Разделы (страницы имеют категорию, связанную с ними)
- Теги (каждая страница может иметь несколько различных меток)
у меня есть боковая панель, которая использует @categories протащить список всех текущих категорий в моем проекте:
<div class="col-md-3">
<p class="lead">Categories</p>
<div class="list-group">
<%= link_to 'All articles', pages_path(@page), :class => 'list-group-item' %>
<% @categories.each do |category| %>
<%= link_to category.name, category_path(category), :class => 'list-group-item' %>
<% end %>
</div>
</div>
Но в настоящее время мне нужно включить
@categories = Category.all
В моем индексе и показать действия в моих контроллерах для обоего страниц и категорий, так что боковая панель нагрузка (я использую только врезку в этих двух частях проекта).
Есть ли более простой способ сделать это, чем включать вышеуказанный код в каждое действие в контроллере?
Также с контроллером тегов после создания страницы и перехода на страницу показа тегов для просмотра любых страниц, связанных с этими тегами, появляется сообщение об ошибке «Не удалось найти страницу с« id »= 2.
class TagsController < ApplicationController
def index
@tags = Tag.all
end
def show
@tag = Tag.find(params[:id])
@page = Page.find(params[:id])
@categories = Category.all
end
-
<% @tag.pages.each do |page| %>
<div class="thumbnail">
<div class="text">
<article class="clearfix">
<%= link_to page.title, url_for_page(page), class: "h1" %>
<p class="pull-right"><span class="glyphicon glyphicon-time"></span> Posted on <%= page.created_at.to_formatted_s :long %></p>
<hr />
<%= page.body.html_safe %>
<hr />
<div class="btn-group btn-group-xs" role="group" aria-label="...">
<% page.tags.each do |tag| %>
<%= link_to tag.name, tag_path(tag), class: "btn btn-info" %>
<% end %>
</div>
</article>
</div>
</div>
<% end %>
Кто есть какие-нибудь идеи? Любая помощь будет принята с благодарностью :)
Спасибо!
Обновление:
Маршруты файл:
Rails.application.routes.draw do
resources :categories
resources :pages
resources :tags
Модели:
Category.rb
class Category < ActiveRecord::Base
has_many :pages
Page.rb
class Page < ActiveRecord::Base
include Bootsy::Container
belongs_to :category
has_many :taggings
has_many :tags, through: :taggings
def tag_list
self.tags.collect do |tag|
tag.name
end.join(", ")
end
def tag_list=(tags_string)
tag_names = tags_string.split(", ").collect{ |s| s.strip.downcase }.uniq
new_or_found_tags = tag_names.collect { |name| Tag.find_or_create_by(name: name) }
self.tags = new_or_found_tags
end
end
Tag.rb
class Tag < ActiveRecord::Base
include Bootsy::Container
has_many :taggings
has_many :pages, through: :taggings
def to_s
name
end
end
Tagging.rb
class Tagging < ActiveRecord::Base
include Bootsy::Container
belongs_to :tag
belongs_to :page
end
Это опечатка или тэг и страница действительно имеют один и тот же идентификатор от запроса? – unused
Где вы ищете? Вероятно, я смотрю прямо в глаза, но я не вижу, где я ошибся: p – Rixcy
В индексе # index вы используете '@tag = Tag.find (params [: id])' и '@page = Page.find (params [: id]) ', поэтому страница и тег совпадают с одинаковыми идентификаторами? – unused