2011-09-20 37 views
0

在我的应用我试图实现对某些对象垃圾,即会出现列“看不上”,它会设定日期,当对象被丢弃。垃圾也有一个索引页面,在这里用户可以还原的对象 - 设置“丢弃”到零。在Rails应用程序废纸篓实施

我发现examples of models with method trash!,该集合丢弃日期和它与关注实施。但我真的不明白如何通过action to_trash实现控制器?有没有办法使用与控制器过于关注或每控制器应该有它自己的行动和路由调用呢?

现在我实现了它与控制器垃圾桶,有行动move_to_trash和每个控制器使用此操作,但我必须添加获取参数trashable_id和trashable_type来做到这一点。这是做事的好方法吗?

回答

0

我认为最简单的实现可能是添加到您的routes.rb文件如下:

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

这将允许您使用行动垃圾桶每个控制器上。看一看在Routing Rails Guide更多的例子。

一个简单的实现是以下(取模型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垃圾行动,并在你想拥有它(不,我不将实现,太)控制器混合。

+0

是的,我只有一些控制器有此动作。我认为你最后的建议是最好的 - 我想做这样的事情。但是你可以让你的提醒更加明确 - 将模型仍然有值得关注的,或者它没有必要?还有什么mixin - 会有不同的路线? –

+0

感谢您的帮助 –