Rails模型命名空间和named_helpers

时间:2014-11-21 11:54:35

标签: ruby-on-rails ruby

好的......我有一个名称空间模型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)选项但是没有效果......

1 个答案:

答案 0 :(得分:1)

滑轨&#39;使用模型类:Operations::Expense来创建newedit方法的路由。当它尝试使用命名空间并将其转换为类似于: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| %>