如何在现有模型的不同命名空间中创建控制器?

时间:2015-10-24 16:12:35

标签: ruby-on-rails

我的rails应用中有一个产品型号。现在我想通过不同命名空间(api)中的脚手架为这个产品模型创建一个控制器和视图。

直到现在我已尝试使用

rails g scaffold_controller product name:string price:integer 

之后我将其添加到我的路线文件

namespace :api do
  resources :products
end

现在我去链接api / products。我收到此错误

uninitialized constant Api::Product

关于索引动作

def index
   @api_products = Api::Product.all
end

在此之后,我从我的控制器索引中删除了Api :: new和create action。执行此操作后,我的索引URL(/ api / products)工作正常但现在当我尝试创建新产品(/ api / products / new)时出现以下错误

undefined method `products_path' 

这是我的模型文件的代码(location is models /)

class Product < ActiveRecord::Base
end

任何人都可以帮助您正确实施吗?

1 个答案:

答案 0 :(得分:1)

您应该将product.rb移至app/models/api并将 班级名称 更改为Api::Product

#app/models/api/product.rb
class Api::Product < ActiveRecord::Base
  self.table_name = "products"
end