rails routing action new to show

时间:2011-07-23 21:46:26

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

我设置了一些类似的路线:

资源:stormtroopers,:only => [:show,:index,:update,:edit]

我怀疑当我点击网址'/ stormtroopers / new'时新动作将无法使用,但show动作正试图查找id'new'

我的rspec测试说明了一切

期望{:get =>“/ stormtroopers / new”}不可路由,但它路由到{:action =>“show”,:controller =>“stormtroopers”,:id => “新”}

这是rails部分的正确行为吗?我不认为这是我的路线?

1 个答案:

答案 0 :(得分:2)

您的new行动已经没有路由了,因为您将其删除了。

但是show动作正在寻找/stormtroopers/something。对something没有约束。

这就是它匹配此路线并触发此操作的原因。

通常,resourcesnew之前定义内部show,这是有效的,因为路由中的规则是:首先匹配,首次投放。

所以这只是逻辑,清楚吗?