Где мета-контент живет в MVC? - PullRequest
6 голосов
/ 21 декабря 2011

Я размышлял о мета-контенте в MVC, в частности о заголовке страницы и мета-описании (что полезно для управления фрагментом, который Google показывает в результатах поиска).

Я не могу прийти к твердому решению о том, где это должно жить. Вокруг этого часто есть небольшая логика, зависящая (для приложения UGC) от того, как читатели взаимодействуют с контентом.

Я не могу решить, лучше ли этот мета контент построен в слое вида или в контроллере. Он почти наверняка не живет в модели, поскольку он специфичен для конкретного представления данных, однако, в то время как мой первый инстинкт был в том, чтобы поместить его в представление, я чувствую, что оно может быть лучше абстрагировано.

Мне интересно, какой подход выбрали другие люди.

1 Ответ

6 голосов
/ 21 декабря 2011

Мета-контент обычно устанавливается с помощью хелперов, content_for и yield.

Например:

# app/helpers/application_helper.rb
def title(title)
  content_for :title, title
end

def description(description)
  content_for :description, description
end

# app/views/layouts/application.html.erb
<title>My app <%= yield :title %></title>
<meta name="description"><%= yield :description %></meta>

# app/views/some_controller/some_action.html.erb
<%
title @an_instance.an_attribute # or whatever you want by the way
description @an_instance.another_attribute
%>

Если вы собираетесь делать потоковое ,вы должны использовать provide вместо content_for в своих помощниках.

Никогда не помещайте в контроллер переменную экземпляра, которая используется для мета-содержимого (например, @title = 'blabla'; @description = 'blablabla')

ЗдесьВот некоторые ресурсы, которые делают то же самое (список не является исчерпывающим):

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...