[英]Rails Routing Error
奇怪的錯誤。 我是護欄的新手。 從新安裝的rails中,我連接到oracle db,然后運行:
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”方法時,錯誤消失了,所以我知道它在呈現路線時存在問題,但是我不確定為什么,因為它似乎具有正確的信息。 我的意思是,這是一個樣板支架,....在此先感謝您的幫助!
這是因為您的ID字段是BigDecimal
,應該是Integer
。 它正在解釋一個數字,例如將“ 1234.54”分為兩部分,例如{:action => "1234", :format => "54" }
。
確保您的config / routes.rb中包含以下行:
map.resources :jobs
另外,運行“ rake route”以查看可用的路由。 * path和* url方法是由在route.rb文件中定義的命名路由和資源生成的。 更多信息在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.