Ruby on rails 如何在Rails中显示用户配置文件的公共版本?

Ruby on rails 如何在Rails中显示用户配置文件的公共版本?,ruby-on-rails,Ruby On Rails,我有一个包含用户名、电子邮件、家乡等信息的用户模型。当用户登录时,他可以通过显示页面(例如/users/723)编辑他的任何信息 我想有一个“公共”版本的这个页面,可以由未登录的人或以其他人身份登录的人查看。它会有关于用户的不同级别的信息,并且没有任何编辑信息的链接 正确显示此页面的三个不同版本的最干净方式是什么 附录 我目前使用authlogic进行身份验证,使用acl9进行访问控制。然而,我不认为这是一个身份验证和授权的问题。我认为这是一个控制器/视图设计的问题。用户是否登录或拥有该信息是偶

我有一个包含用户名、电子邮件、家乡等信息的用户模型。当用户登录时,他可以通过显示页面(例如/users/723)编辑他的任何信息

我想有一个“公共”版本的这个页面,可以由未登录的人或以其他人身份登录的人查看。它会有关于用户的不同级别的信息,并且没有任何编辑信息的链接

正确显示此页面的三个不同版本的最干净方式是什么

附录


我目前使用authlogic进行身份验证,使用acl9进行访问控制。然而,我不认为这是一个身份验证和授权的问题。我认为这是一个控制器/视图设计的问题。用户是否登录或拥有该信息是偶然的。如果您想根据会话状态以三种不同的方式显示小部件,我认为您可以使用这个问题的答案。

有很多方法可以做到这一点,但我认为没有最干净的方法

我可能会将页面分成几个部分,每个部分对应您需要的信息分组

然后,可以使用变量控制渲染哪些部分

例如(在HAML中):

对于真正简单的东西,您可以内联if(而不是使用partial)

或者,如果内容失控,您可以为每个“显示”页面提供不同的视图

对于用户配置文件(以及用户身份验证),我强烈建议查看。它使一切都非常简单,而且设计得非常好。您基本上添加了一个before过滤器,该过滤器显示:

before_filter :require_login, :only => [:edit, :update]
然后您必须登录才能进行编辑(从而发布更新),否则它是可公开查看的

您可以从下载示例应用程序

它还支持通过一些插件与OpenID、LDAP、FacebookConnect和OAuth(Twitter)集成,这些插件在项目的github页面上进行了讨论(如上链接)


我希望我的回答有帮助。

我认为您应该创建第二个控制器(例如memberprofiles控制器)。
因此,您可以将用户编辑区与公共访问区分开。

@Mike,我认为OP已经有了一些方法来进行身份验证和授权,他只是在寻找一种方法来彻底分解他的视图。@Sam,我理解,但Authlogic实际上是一种“直接访问”解决方案,包含他正在寻找的功能,没有任何麻烦。这只是一个他可能没有发现的建议,我认为值得一提。在这一点上,我同意Sam的观点,但有一点需要注意的是,根据差异,只进行内联更改可能更有意义。例如,在一个网站上,我只想为管理员启用快速编辑功能,这在视图中是一个简单的条件,但我不想在差异如此微小的情况下,将其划分为部分。
before_filter :require_login, :only => [:edit, :update]