2015-11-05 53 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

你是對的。這與路線無關 –