Зависимость layout'ов от рубрики, как реализовать?

Всем привет!

Опишу кратко задачу, есть журнал на рельсах, у него есть рубрики, 5 основных рубрик и более 15 подрубрик, в которых уже хранятся посты. Вопрос - Как реализовать фичу, чтобы журналист при создании поста мог выбрать подрубрику и к ней автоматически определился свой layout (layout'ов может быть много).

Еще есть второй вопрос, он как-то связан с первым, можно ли к этому функционалу привязать свои _partial'ы которые следят за видом поста в ленте?

Вот пример по второму вопросу:

Image%202014-04-28%20at%208.27.16%20%D0%
  • Вопрос задан
  • 2415 просмотров
Решения вопроса 1
YourWest
@YourWest
Ruby Developer
Функция для установки лэйаута:
class Post
  layout :set_layout

  private
  def set_layout
    "#{category_name}_layout"
  end
end


Что бы отрендерить пост, с кастомным видом можно сделать что-то вроде этого:

<%= render partial: "posts/#{@post.category_name}", locals: { post: @post } %>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Пусть у вас есть такая структура:

class Post < ActiveRecord::Base
  belongs_to :category
  belongs_to :sub_category
end


Тогда, чтобы отрендерить статью в определенной layout'e в зависимости от подкатегории можно сделать примерно так:

class PostsController < ApplicationController
  def show
    @post = Post.find(params[:id])
    render layout: @post.sub_category.name
  end
end


Ну и естественно при этом в директории views/layouts должны лежать соответствующие файлы для каждый подкатегории.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы