【问题标题】:Public user profiles? Ruby on Rails + Devise公开用户资料? Ruby on Rails + 设计
【发布时间】:2011-03-23 21:22:04
【问题描述】:

如何制作公开的用户资料?我使用设计,只有 /user/。用户只能看到他的个人资料,我想制作 /user/user_id。

user_id - 公开的用户个人资料。

【问题讨论】:

  • 不只是编写一个控制器,将@user 定义为@user = User.find(params[:id]),假设@user 是您在个人资料视图中使用的吗?
  • 我制作博客又名 twitter(为了经验,我正在学习 RoR)。我是用户 1,我想查看用户 2 的公开个人资料(照片、位置、简历、最后一条消息)。

标签: ruby-on-rails devise user-profile


【解决方案1】:

要使用 devise 创建公开个人资料,请确保您设置了类似的路由

resources :users

并确保您设置了控制器操作来处理显示资源。如果没有,请创建一个控制器 users_controller.rb 并给它一个类定义以及一个 show 方法。

class UsersController < ApplicationController
  def index
    @users = User.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @users }
    end
  end

  def show
    @user = User.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @user }
    end
  end
end

接下来浏览到/users/1/users/2(如果您设置了两个用户),您应该会看到这两个配置文件。要将它们设置为私有,您应该在控制器操作中执行一个前置过滤器,检查 current_user id 与 param[:user_id]

【讨论】:

    【解决方案2】:

    您应该在 config/routes.rb 文件上创建一个路由,如下所示。然后实现你的控制器方法和视图。

      match 'show/:id' => 'user#show'
    

    【讨论】:

      【解决方案3】:

      我没有那么有经验,但我是这样做的:

      • 在控制器中创建 users_controller.rb

      • 在视图中创建 /users/ 典型视图,例如 indexshow(当然在您的控制器中定义它们)

      • 在路由中添加resources :users

      您可以简单地将迁移添加到用户表中,例如

      $ rails g migration add_birthday_to_users birthday:date
      

      并将其显示在 users/:id 页面上

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-17
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多