2009-12-15 115 views
0

奇怪的錯誤。我是rails的新手。從一個新的安裝導軌我連接到Oracle數據庫,然後跑:導軌路由錯誤

jruby script/generate scaffold job oid:integer userid:integer name:string status:integer 

沒有做別的事情,我開始了服務器,並進入了一個新的工作,然後我得到這個錯誤:

Routing Error 

job_url failed to generate from {:controller=>"jobs", :action=>"show", :id=>#<Job id: #<BigDecimal:d55a0f,'10000.0',1(8)>, oid: #<BigDecimal:10bb83e,'1324.0',4(8)>, userid: #<BigDecimal:6d234c,'1234.0',4(8)>, name: "asdfadsf", status: #<BigDecimal:1286c71,'1234.0',4(8)>, created_at: "2009-12-15 00:49:37", updated_at: "2009-12-15 00:49:37">}, expected: {:controller=>"jobs", :action=>"show"}, diff: {:id=>#<Job id: #<BigDecimal:853e51,'10000.0',1(8)>, oid: #<BigDecimal:1be4050,'1324.0',4(8)>, userid: #<BigDecimal:adb165,'1234.0',4(8)>, name: "asdfadsf", status: #<BigDecimal:15978e7,'1234.0',4(8)>, created_at: "2009-12-15 00:49:37", updated_at: "2009-12-15 00:49:37">} 

即使它拋出錯誤,它仍然創建記錄。當我嘗試查看記錄時,我得到以下堆棧,這實際上是相同的錯誤。

ActionController::RoutingError in Jobs#show 

Showing app/views/jobs/show.html.erb where line #22 raised: 

edit_job_url failed to generate from {:controller=>"jobs", :action=>"edit", :id=>#<Job id: #<BigDecimal:18caa36,'10000.0',1(8)>, oid: #<BigDecimal:1fac733,'1324.0',4(8)>, userid: #<BigDecimal:12c1472,'1234.0',4(8)>, name: "asdfadsf", status: #<BigDecimal:f25f89,'1234.0',4(8)>, created_at: "2009-12-15 00:49:37", updated_at: "2009-12-15 00:49:37">}, expected: {:controller=>"jobs", :action=>"edit"}, diff: {:id=>#<Job id: #<BigDecimal:1b9cdfc,'10000.0',1(8)>, oid: #<BigDecimal:1829097,'1324.0',4(8)>, userid: #<BigDecimal:e2d663,'1234.0',4(8)>, name: "asdfadsf", status: #<BigDecimal:691ccf,'1234.0',4(8)>, created_at: "2009-12-15 00:49:37", updated_at: "2009-12-15 00:49:37">} 
Extracted source (around line #22): 

19: </p> 
20: 
21: 
22: <%= link_to 'Edit', edit_job_path(@job) %> | 
23: <%= link_to 'Back', jobs_path %> 
RAILS_ROOT: /opt/code/import 

Application Trace | Framework Trace | Full Trace 
/opt/jruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/routing/route_set.rb:426:in `raise_named_route_error' 
/opt/jruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/routing/route_set.rb:387:in `generate' 
/opt/jruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/url_rewriter.rb:205:in `rewrite_path' 
/opt/jruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/url_rewriter.rb:184:in `rewrite_url' 
/opt/jruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/url_rewriter.rb:162:in `rewrite' 
/opt/jruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:634:in `url_for' 
/opt/jruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_view/helpers/url_helper.rb:85:in `url_for' 
(eval):16:in `edit_job_path' 
/opt/code/import/app/views/jobs/show.html.erb:22:in `_run_erb_app47views47jobs47show46html46erb' 
/opt/code/import/app/controllers/jobs_controller.rb:18:in `show' 
Request 

Parameters: 

{"id"=>"10000"} 
Show session dump 

Response 

Headers: 

{"Cache-Control"=>"no-cache", 
"Content-Type"=>"text/html"} 

當我刪除了「edit_job_path」方法錯誤消失,所以我知道它只是有一個問題渲染路線,但我不知道爲什麼,因爲它似乎有正確的信息。我的意思是這是一個樣板腳手架,所以....在此先感謝您的幫助!

回答

2

這是因爲您的ID字段是BigDecimal,它應該是Integer。它將一個數字如「1234.54」分成兩部分,如{:action => "1234", :format => "54" }

+0

賓果。謝謝瑞恩!我意識到在發佈BigDecimal後發生了一些事情,但並不確定是什麼。你釘了它。這是因爲我使用的是JRuby,我不需要這麼做,因此我將切換回非Java Java虛擬機。 – 2009-12-16 16:23:07

1

請確保您有這條線在你的config/routes.rb文件:

map.resources :jobs 

,也需要運行「耙路」,看看哪條路線可供選擇。 * path和* url方法由您在routes.rb文件中定義的命名路由和資源生成。更多信息here