Ошибка маршрутизации Rails - PullRequest
       17

Ошибка маршрутизации Rails

0 голосов
/ 15 декабря 2009

Странная ошибка. Я новичок в рельсах. Из новой установки рельсов я подключился к 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", ошибка исчезает, поэтому я знаю, что это просто проблема с рендерингом маршрута, но я не уверен почему, потому что кажется, что он содержит правильную информацию. Я имею в виду, что это шаблонные леса, так что ... Спасибо заранее за любую помощь!

Ответы [ 2 ]

2 голосов
/ 15 декабря 2009

Это потому, что ваше поле идентификатора - BigDecimal, где оно должно быть Integer. Он интерпретирует число, такое как «1234.54», разделенное на две части, что-то вроде {:action => "1234", :format => "54" }.

1 голос
/ 15 декабря 2009

Убедитесь, что у вас есть эта строка в вашем config / rout.rb:

map.resources :jobs

Также запустите «Рейк-маршруты», чтобы увидеть, какие маршруты доступны. Методы * path и * url генерируются именованными маршрутами и ресурсами, которые вы определяете в файле rout.rb. Подробнее здесь .

...