Ruby on Rails(三)隐藏部分视图

发布于 2024-10-12 15:24:51 字数 470 浏览 1 评论 0原文

我正在开发 Ruby on Rails 3 Web 应用程序。

我有一个名为 User 的表,其中包含一个名为 role 的对象。我正在寻找对视图的这些部分具有“错误”角色的用户隐藏视图部分的最佳方法。

例如,我希望所有用户都能够看到用户 index 页面,但我希望只有具有角色 - admin 的用户能够编辑其他用户。

因此,首先我使用 filter_by 阻止 edit 操作,但我还想要的是让 edit 按钮不出现。

当前用户保存在会话中,因此检查用户角色非常简单。

我要问的是,除了我想隐藏的每个按钮之前明显的 if 语句之外,是否有一种简单的方法可以做到这一点。我认为 Rails 有一种简单的方法可以完成此类事情,但我找不到。

I am working on a Ruby on Rails 3 web application.

I have a table named User with a coulmn named role. I am looking for the best way to hide parts of the view from users that have the "wrong" role for those parts of the view.

For example I want all users to be able to see the users index page, but i want only users with a role - admin to be able to edit other users.

So first I block the edit action using filter_by, but what I also want is make the edit button not to appear.

The current user is saved in the session, so checking the user role is very simple.

What I am asking, is there an easy way to do so besides the obvious if statement before each button I want to hide. I would think that rails would have an easy way to do this type of thing, I couldn't find one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

韵柒 2024-10-19 15:24:51

如果你想清理它一点点,你可以自己编写一个应用程序助手:

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

然后在你看来你可以写:

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

if you wanted to clean it up a tiny bit you could write yourself an application helper:

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

then in your view you could write:

  <% if_admin(@user) do %>
    <some admin only html />
  <% end %>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文