在我的应用程序中,我有一个项目模型,其中有_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"操作中。