好的......我有一个名称空间模型Operations::Expense
。
routes.rb上的资源声明是'范围'因为我不想要路径' /操作/费用' (只是' /费用'):
scope module: 'operations' do
resources :expenses
end
新/编辑表格:
<%= form_for @operation, as: 'operation' %>
其中@operation是一个费用对象。
问题是:当我打开&#39; / expenses / new&#39;时,得到了错误
undefined method 'operations_expenses_path'
如何解决将名称空间保留在URL之外的问题?
P.S。:已经使用url
尝试了form_for上的expenses_path(@operation)
选项但是没有效果......
答案 0 :(得分:1)
滑轨&#39;使用模型类:Operations::Expense
来创建new
和edit
方法的路由。当它尝试使用命名空间并将其转换为类似于:operations_expenses_(path/url)
的路由时。
由于您拥有scope module: 'operations'
,因此会创建expenses_(path/url)
方法。
尝试将路线更改为:
namespace :operations, path: '/' do
resources :expenses
end
这将创建operations_expenses_(path/url)
辅助方法,但路由到'/expenses'
。
但是,提供form_for
的网址应该可以正常工作(因为它对我有用):
new
-
<%= form_for(@operation, as: 'operation', url: expenses_path, method: :post)) do |f| %>
edit
-
<%= form_for(@operation, as: 'operation', url: expenses_path(@operation), method: :patch)) do |f| %>