Rails,为给定用例使用控制器的正确方法



在我的应用程序中,我有一个项目模型,其中有_many权限(user_id, project_id)。

当管理员正在查看一个项目时,我想建立一个链接到"添加成员",然后显示一个对话框,允许管理员向项目添加新用户。

我的问题是,对于添加成员对话框,哪个控制器&我应该使用的方法来填充对话框?

我认为会员比许可更合适。然后你有一个"会员"资源。您可以使用标准的REST方式来操作资源。"添加成员"用于创建资源。它发生在MembershipController中。

我会在您的项目控制器的更新中这样做,因为您正在更新项目资源的内容。

为视图使用.erb(嵌入式Ruby)文件。这样,你就可以拥有一个只有管理员才能显示/访问的视图部分。

的例子:

... some html code ...
<% if an_admin_is_logged_in %>
  ... your admin-specific dialog box and code ...
  ... if this section includes links to actions that should only be accessible by admins
  ... make sure you're using a 'before_filter' in the associated controller to limit access
<% end %>

然后在app/controllers/application_controller中写一个动作。

helper_method :an_admin_is_logged_in
private
  def an_admin_is_logged_in
     ... code that checks that the current user logged in user is an admin
  end

在应用程序控制器中放置'an_admin_is_logged_in'操作,使该操作在项目中的所有视图中都可用。

此外,一些身份验证插件/宝石,如authlogic包括这些类型的东西,可能会有所帮助。还有一个很棒的Railscast解释了它的用法。

如果这是对项目的编辑(即您正在编辑项目的权限),那么您可以使用'edit'操作来填充对话框,并对'update'操作进行PUT以保存更改。

您还可以编写一个名为"edit_permissions"的特定于管理员的操作,它填充对话框,然后将更改放到"update"操作中。

相关内容

  • 没有找到相关文章

最新更新