0

在我的应用程序中,我正在尝试为某些对象实现垃圾,即当对象被丢弃时,会有“已丢弃”列,它会设置为日期。垃圾箱还有一个索引页面,用户可以在其中恢复对象 - 将“已回收”设置为 nil。

我找到了带有方法垃圾的模型示例!,该设置迄今为止已被丢弃,并且已通过关注点实施。但我真的不明白如何用动作 to_trash 实现控制器?有没有办法将关注点与控制器一起使用,或者每个控制器都应该有自己的操作和调用它的路线?

现在我用控制器 Trash 实现了它,它有动作 move_to_trash 并且每个控制器都使用这个动作,但我必须添加 get params 垃圾箱 ID 和垃圾箱类型才能做到这一点。这是做事的好方法吗?

4

1 回答 1

0

我认为最简单的实现可能是将以下内容添加到您的routes.rb文件中:

match ':controller/:id/trash', :action => :trash

这将允许您在每个控制器上使用操作垃圾。查看Routing Rails 指南以获取更多示例。

一个简单的实现如下(以模型Report为例)。我不在Concern这里使用:

class ReportsController < ApplicationController
  def trash
    @report = Report.find(params[:id])
    <Do the trashing of report here, you know that already.>
    # Decide what to do after having called #trash
    respond_to do |format|
      format.html { redirect_to(reports_url) }
    end
  end
end

如果您只有一些应该允许该操作的控制器,那么为每个控制器添加特殊的路由规则可能会更容易,而不是将其添加到每个控制器中。如果你想更进一步,你可以在 mixin 中实现垃圾动作,然后在你想要的控制器中混合它(不,我也不会实现)。

于 2011-09-20T06:23:42.940 回答