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

时间:2011-04-17 18:05:10

标签: ruby-on-rails ruby-on-rails-3

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

当管理员正在查看项目时,我想构建一个指向“添加成员”的链接,然后会显示一个对话框,允许管理员将新用户添加到项目中。

我的问题是,对于Add Members对话框,哪个控制器&我应该使用哪种方法来填充对话框?

4 个答案:

答案 0 :(得分:1)

我认为会员资格比许可更好。然后你有一个'会员'资源。您可以使用标准REST方式来操作资源。 '添加成员'是创建资源。所以它通过POST请求在MembershipController.create方法中发生。

答案 1 :(得分:0)

我会在更新项目控制器时执行此操作,因为您正在更新项目资源的内容。

答案 2 :(得分:0)

为您的视图使用.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.rb中写一个类似于......的行动

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)包含这些类型的内容,可能会有所帮助。还有a great Railscast that explains its use

答案 3 :(得分:0)

如果这是对项目的编辑(即您正在编辑项目的权限),那么您可以使用“编辑”操作填充对话框,并使用PUT进行“更新”操作以保存变化。

您还可以编写一个名为“edit_permissions”的特定于管理员的操作,该操作会填充对话框,然后将更改保留为“更新”操作。