Где разместить повторяющийся код отображения для представлений в приложении Ruby on Rails? - PullRequest
1 голос
/ 20 июля 2010

У меня есть модель заметки, которая может содержать прикрепленную ссылку на изображение (linktype = "image") или какой-либо текст (linktype = "text). Когда я отображаю заметки, метод отображения меняется в зависимости от типа ссылки.Например:

<% @notes.each do |q| %>
    <h2 class="title"><%= q.name %></h2>
    <% if q.linktype == "image"%>
        <img src="<%= q.link %>" />
    <% elsif q.linktype == "text"%>
        <%= q.text %>
    <% end %>
<% emd %>

Мне нужно отображать заметки в нескольких разных видах на моем сайте, поэтому вместо того, чтобы повторять код просмотра несколько раз, я хочу, чтобы он был в одном месте и имел ссылкук нему с разных точек зрения.

Должен ли я сделать это в помощнике приложения? Если да, я должен поместить код отображения, как код выше, прямо в помощник, или есть лучший способ? Спасибо зачтение.

1 Ответ

4 голосов
/ 20 июля 2010

Для повторения кода представления, который не имеет ничего общего с какой-либо сущностью (скажем, не users/show.html.erb), создайте папку виджетов и напишите туда свою частичку.Я вставляю навигационные панели своих виджетов и тому подобное.

/app/views/widgets/widget1.html.erb
/app/views/widgets/widget2.html.erb
...

# some_view.html.erb
<%= render :partial => 'widgets/widget1' %>

Абстрактным образом я делаю различие между помощниками и такими частями следующим образом:

  • помощникидля логики, связанной с видом (итерация особым образом и т. д.)
  • виджеты вида - это изображение данных, они просто сопоставляют дыры с данными
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...