Можно ли получить доступ к значению из таблицы базы данных модели в application.html.erb? - PullRequest
0 голосов
/ 19 января 2011

я пытаюсь создать приложение

с пользователями, эти пользователи могут присоединиться к нескольким группам - каждая группа имеет одно и то же меню на странице, доступ к которой имеет их страница группы о группе / 1 или группе / 2

, поэтому я хотел поместить меню в application.html.erb, где lnks зависит от group.id - но я не знаю, как получить доступ к этому идентификатору в application.html.erb

Ответы [ 3 ]

1 голос
/ 19 января 2011

Это часто делается с использованием content_for в макете. Допустим, вы хотите, чтобы ваше меню находилось в определенном div в application.html.erb:

# application.html.erb
<div id="menu_div>
  <ul>
  ... etc ...
  </ul>
</div>

Заменить внутреннее содержимое на выражение yield:

<div id="menu_div>
  <%= yield :group_menu %>
</div>

Затем в шаблон представления добавьте блок content_for:

# page
<% content_for :group_menu do %>
  <ul>
  ... etc ...
  </ul>
<% end %>

Каждый шаблон страницы может затем определить свой собственный код меню в блоке content_for. Это может быть дополнительно обобщено с помощью вспомогательного метода в блоке и передачи переменных экземпляра.

EDIT

Предполагая, что в контроллере назначено @group, вы можете сделать что-то вроде:

<% content_for :group_menu do %>
  <%= show_me_the_menu(@group) %>
<% end %>

и в помощнике (явно надуманный пример) :

def show_me_the_menu(group)
  content_tag :ul do
    group.users.collect do |user|
      concat(content_tag(:li, user.some_method))
    end
  end
end
1 голос
/ 19 января 2011

Правильный подход был бы установить это в ApplicationController через before_filter и просто использовать его как переменную экземпляра в представлениях.

Так что в контроллере задайте что-то вроде @links = некоторую логику, в которой вы вычисляетеваши ссылки основаны на текущем пользователе.

В связи с этим вы делаете что-то вроде:

<ul>
  <%- for link in @links -%>
    <li><%= link.title =>
  <%- end -%.
</ul>

Конечно, вы устанавливаете свои @links в ApplicationController, только если вы хотите, чтобы ваши ссылки были доступны для всехваши контроллеры / представления, которые, я думаю, вы делаете.

Rails Cells также могут быть использованы здесь http://cells.rubyforge.org/

0 голосов
/ 22 января 2011

Я решил свою проблему по-другому.я создал в групповой модели «меню», и это я сделал частично в application.html.erb

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