我设置了一些类似的路线:
资源:stormtroopers,:only => [:show,:index,:update,:edit]
我怀疑当我点击网址'/ stormtroopers / new'时新动作将无法使用,但show动作正试图查找id'new'
我的rspec测试说明了一切
期望{:get =>“/ stormtroopers / new”}不可路由,但它路由到{:action =>“show”,:controller =>“stormtroopers”,:id => “新”}
这是rails部分的正确行为吗?我不认为这是我的路线?
答案 0 :(得分:2)
您的new
行动已经没有路由了,因为您将其删除了。
但是show动作正在寻找/stormtroopers/something
。对something
没有约束。
这就是它匹配此路线并触发此操作的原因。
通常,resources
在new
之前定义内部show
,这是有效的,因为路由中的规则是:首先匹配,首次投放。
所以这只是逻辑,清楚吗?