Ruby on Rails (3) скрывает части вида - PullRequest
2 голосов
/ 18 января 2011

Я работаю над веб-приложением Ruby on Rails 3.

У меня есть таблица с именем User с именем role. Я ищу лучший способ скрыть части представления от пользователей, которые имеют «неправильную» роль для этих частей представления.

Например, я хочу, чтобы все пользователи могли видеть страницу пользователей index, но я хочу, чтобы только пользователи с ролью - admin могли редактировать других пользователей.

Итак, сначала я блокирую действие edit, используя filter_by, но я также хочу, чтобы кнопка edit не появлялась.

Текущий пользователь сохраняется в сеансе, поэтому проверка роли пользователя очень проста.

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

Ответы [ 2 ]

3 голосов
/ 18 января 2011

Возможно, вы захотите использовать Devise и CanCan.

Вот учебник по RailCast

2 голосов
/ 18 января 2011

если вы хотите немного убрать его, вы можете написать себе помощника приложения:

  def if_admin(user)
    if(user.is_admin? && block_given?)
      yield
      return
    end
  end

, тогда, на ваш взгляд, вы можете написать:

  <% if_admin(@user) do %>
    <some admin only html />
  <% end %>
...