在添加新的收集路由后,Rails 4.2.5无法隐藏路由

时间:2016-03-18 19:19:45

标签: ruby-on-rails-4

我有一个只有两个动作的模型:列出索引(观察自上次检查后的所有更改)并删除表中的所有项目。

因此我为删除定义了一个新动作(在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,它会按预期工作。

2 个答案:

答案 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'