代码之家  ›  专栏  ›  技术社区  ›  dbrown0708

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

  •  2
  • dbrown0708  · 技术社区  · 16 年前

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

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

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

    附录 .

    我目前正在使用AuthLogic进行身份验证,使用ACL9进行访问控制。但是,我不认为这是身份验证和授权的问题。我认为这是控制器/视图设计的问题。用户是登录还是拥有信息是偶然的。如果您想基于某个会话状态以三种不同的方式显示小部件,我想您可以使用这个问题的答案。

    3 回复  |  直到 16 年前
        1
  •  4
  •   Sam Saffron James Allen    16 年前

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

    我可能会将页面分成部分,每一组您需要的信息一部分。

    然后您可以让变量控制渲染哪些部分。

    例如(在Haml中):

    - if @admin
      render :partial => 'admin_panel'
    

    对于真正简单的东西,您可以在if(而不是有一个部分)中内联。

    或者,如果内容失控,您可以对每个“显示”页面拥有不同的视图。

        2
  •  1
  •   BvuRVKyUVlViVIc7    16 年前

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

        3
  •  0
  •   Mike Trpcic    16 年前

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

    before_filter :require_login, :only => [:edit, :update]
    

    然后您必须登录才能进行编辑(从而发布到更新),否则它是公开的。

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

    它还支持通过一些插件与openid、ldap、facebook connect和oauth(twitter)集成,这些插件在项目的Github页面上讨论过(链接在上面)。

    我希望我的回答有帮助。