我有一个只有两个动作的模型:列出索引(观察自上次检查后的所有更改)并删除表中的所有项目。
因此我为删除定义了一个新动作(在config / routes.rb中):
<div class="dashboard-body">
<p>You don't have any sales data.</p>
<p>Please add a new book or upload CSVs.</p>
<div class="btn-group">
<a href="#">
<input class="add-new-book-btn" type="submit" value="Add New Book">
</a>
<a href="#">
<input class="add-new-book-btn" type="submit" value="Upload CSV">
</a>
</div>
</div>
这很好(在控制器中创建delete_all动作之后)。
下一步是限制公开的路由,因为我只需要索引和新的路径:
resources :changes do
collection { delete 'delete_all' }
end
不幸的是,即使使用第二行,资源也根本没有受到限制。
如果我没有定义新动作delete_all,它会按预期工作。
答案 0 :(得分:0)
资源:更改,:仅限=&gt; [:index,:delete_all],仅使用像[new,index,edit,show,destroy,create,update]这样的curd动作。 所以rails资源:不允许在&#34;:only =&gt; []&#34;中添加自定义操作,您将使用该集合。
答案 1 :(得分:0)
好的,我找到了。实际上Rails在“资源丰富”和“非资源”路线之间有所区别。资源完整的是7个默认值,很多方法只适用于那些。
最后我按如下方式定义了路线,这很好用:
获取'更改/'=&gt; 'change#index',as:'changes'
删除'changes /'=&gt; 'change#delete_all',如:'delete_all'