0

我希望根据用户的角色和解决外部缓存问题(例如客户端的浏览器或哑代理)使 url 的内容具有几种不同的视图。

网址是:

http://myhost.com/widget/1234

如果小部件 1234 的所有者查看该页面,他们将看到“编辑”和“统计”部分。

如果未登录的人查看相同的 URL,他们将看到没有“所有者”部分的页面。

由于使用的是相同的 URL,处理这种情况的最佳方法是什么?我怀疑,如果此人已登录,那么他们应该会看到不同的 URL:

http://myhost.com/owners/widget/1234

这将很好地解决缓存问题。然而,这扰乱了铁路的资源观点。

我是否重复并告诉 DRY 先生“对不起!”

有没有人有任何建议或建议?

-丹尼尔

4

2 回答 2

2

您应该使用演示者。

http://railscasts.com/episodes/287-presenters-from-scratch

从那里,您可以创建类似的逻辑

if user_signed_in?
  render 'blah'
end
于 2013-07-11T00:33:04.467 回答
0

因此,解决这个问题的最简单方法是为管理员角色和普通用户设置一个单独的页面。所以他们必须通过不同的方式来编辑页面。

如果它必须在同一页面上,它们是您可以做的两件事之一。

a) 片段缓存页面并排除用户特定的部分 b) 使用 ajax 来达到明确角色的端点。因此,基本上默认情况下,您将隐藏按钮并向 /api/owners/roles 发出 ajax 请求,这将确定当前登录用户的角色是什么。如果他们的角色大于 x 角色 $(".edit-button").show()

于 2013-07-11T00:30:53.497 回答