2015-11-05 47 views
0

我在Rails应用程序路径:Rails没有看到路线BIGINT ID

resources :products do 
    get 'preview', to: 'products#preview', on: :member 
    #member do 
    # get 'preview' 
    #end 
end 

定义路线 '/产品/:ID /预览'。

Products.id在数据库中是bigint。

当我打开URL'/ products/15/preview'时,它工作正常。 但是,当我与大ID = 67500,比整数最大值更大= 65535打开它:

http://localhost:3000/products/67500/preview 

它显示404错误。这里id = 67500,它大于Integer(65535),路由不起作用。

如何让Rails识别BIGINT类型的ID?

+0

请发表您的控制器代码 – Src

+1

你应该改变产品'CREATE_TABLE的'id'柱:产品:ID =>假do | t | t.integer:ID,:极限=> 8 end'通过此 –

+0

控制器: DEF预览 ID =参数[:ID] @row = Product.find(ID) 端 –

回答

1

Rajarshi Das是对的 - 这不是路由问题,而是一个数据库一。


DB

路由系统的一部分只会被发送所需的PARAMS到控制器。它与你发送号码的大小没有关系 - 这是“愚蠢的”。

该问题似乎与您的数据库 - 无法查找您请求的id

要解决这个问题,您需要更改idaccommodate larger numbers

$ rails g migration ChangeIDProducts 

#db/migrate/change_id_products______.rb 
class ChangeIdProducts < ActiveRecord::Migration 
    def change 
     change_column :products, :id, limit: 20 
    end 
end 

$ rake db:migrate 
+0

我已经有柱数据库中的bigint类型的id。我重新启动服务器,现在它工作。谢谢! –

+0

会发生什么? –

+0

你是对的。这与路线无关 –