【问题标题】:Rails - Rendering different "dashboard/user profile" depending on the type of user?Rails - 根据用户类型呈现不同的“仪表板/用户配置文件”?
【发布时间】:2014-02-27 14:55:34
【问题描述】:

我的应用有不同的用户类型/模型,例如:医生和医疗机构(顺便说一句,不确定这些名称是否好)。它们与用户具有多态关联。

到目前为止的控制器:

HomesController - 验证用户是否登录。如果是,则重定向到 dashboard_path,如果不是,则重定向到登录页面。

DashboardsController - “显示当前用户配置文件。”代码:

class DashboardsController < ApplicationController
  before_filter :authenticate_user!
  def show
    @user = current_user.profile
    render "#{@user.dashboard_something_variable}_dashboard"
  end
end

这是个好主意,还是您会拆分控制器?我觉得 DoctorsController 的显示操作是让其他人查看放射科医生的个人资料,而不是让医生自己查看他的个人资料/私人事物。

谢谢!

【问题讨论】:

  • 每个用户类型有多少不同的内容?这将有助于获得更好的答案。
  • 机构发布医生可以执行的工作。我想你可以说它是“医生的电子商务”。所以有共享部分(名称、编辑个人资料链接等),而不是共享部分(发布工作、回答工作......)。你怎么看?
  • 我认为您应该为每种用户类型设置部分布局。然后根据用户类型渲染它们。

标签: ruby-on-rails model-view-controller controller


【解决方案1】:

您可以为每个视图设置一个局部视图..

def show
  # ...
  @partial = current_user.profile # 'doctor', 'radiologist',...
end

在show.html.erb中:

<%= render @partial %>

然后您将每个视图部分保存在控制器的视图文件夹中,例如_doctor.html.erb, _radiologist.html.erb.

【讨论】:

  • show.html.erb 和控制器中渲染有什么区别?是不是要有“共享布局”?
  • 对我来说它更干净。常见的东西会在show.html.erb 中,独特的东西可以放在部分中。
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 2017-07-24
  • 2011-10-03
  • 2011-12-29
  • 2022-11-30
  • 1970-01-01
  • 2021-03-06
  • 2016-04-14
相关资源
最近更新 更多