假设命名空间是"abc",我们有一个控制器"abcs",另一个使用命名空间"abc"的是"defs".
为了便于理解:
AbcsController
Abc::DefsController
Run Code Online (Sandbox Code Playgroud)
当当前流程进入时AbcsController,url_for({:controller => "abcs", :action => :new})正在返回正确的url但是当流程进入Abc::DefsController时,我正在给出:
url_for({:controller => "abcs", :action => :new })
Run Code Online (Sandbox Code Playgroud)
它将其视为:
url_for({:controller => "abc/abcs", :action => :new}) #Observe abc/abcs
Run Code Online (Sandbox Code Playgroud)
所以,这里它应该是"abcs"而不是"abc/abcs",但它正是这样对待的.
什么是解决方案?请向我询问更多信息.
从这里:http: //guides.rubyonrails.org/routing.html#controller-namespaces-and-routing
最后一个备注框如下:
如果需要在命名空间块中使用不同的控制器命名空间,则可以指定绝对控制器路径,例如:get'/ foo'=>'/ foo #index'.
这意味着你所要做的就是:
url_for({:controller => "/abcs", :action => :new })
Run Code Online (Sandbox Code Playgroud)
我也遇到了这个问题,这解决了它:)
| 归档时间: |
|
| 查看次数: |
2659 次 |
| 最近记录: |