2014-09-08 6 views
0

Извините, новичок. Я новичок в ROR, а не веб-разработчик. У меня есть трудности с пониманием маршрутов с помощью activeadmin. У меня есть таблица postgresql с bytea колонки для хранения изображений JPEG и других текстовых данных.CRUD ActionController :: RoutingError (Нет совпадений в маршруте [GET]

Я после этого учебника http://archive.railsforum.com/viewtopic.php?id=4642.

Вот файл миграции.

class CreateDrstests < ActiveRecord::Migration 
    def change 
    create_table "drstests", primary_key: "drstestid", force: true do |t| 
     t.string "serial", limit: 10 
     t.datetime "testdate" 
     t.string "result",  limit: 10 
     t.string "comment", limit: 2000 
     t.binary "testimage" 
    end 
    end 
end 

Показать все данные в таблице PostGreSQL в виде список без jpeg-изображения. (работает). Отобразить индивидуальный результат теста с помощью jpeg-изображения. (Сломанный)

app/admin/drstest.rb 

    ActiveAdmin.register Drstest do 

     index do 
     column :testtype 
     column :testdate 
     column :result 
     default_actions 
     end 

     def code_image 
     @image_data = Drstest.find(params[:drstestid]) 
     @image = @image_data.testimage 
     send_data(@image, :type  => imge/jpeg, 
        :filename => @image_data.testdate, 
        :disposition => 'inline') 
     end 

    end 

views/drstests/show.html.erb 

    <p id="notice"><%= notice %></p> 
    <% for column in Drstest.content_columns %> 
    <p> 
    <b><%= column.human_name %>:</b> 
    <% if column.name == "testimage" %> 
     <%= image_tag("/admin/code_image/#{@drstest.drstestid }", :alt => "Image") %> 
    <% else %> 
     <%=h @drstest.send(column.name) %> 
    <% end %> 
    </p> 
    <% end %> 

    <%= link_to 'Back', drstests_path %> 

Здесь ошибка в develoment_log

Started GET "/drstests/5" for 127.0.0.1 at 2014-09-08 18:11:07 -0400 
Processing by DrstestsController#show as HTML 
    Parameters: {"id"=>"5"} 
    Drstest Load (0.5ms) SELECT "drstests".* FROM "drstests" WHERE "drstests"."drstestid" = $1 LIMIT 1 [["drstestid", 5]] 
    Rendered drstests/show.html.erb within layouts/application (1.8ms) 
Completed 200 OK in 425ms (Views: 421.4ms | ActiveRecord: 0.5ms) 


Started GET "/admin/code_image/5" for 127.0.0.1 at 2014-09-08 18:11:08 -0400 

ActionController::RoutingError (No route matches [GET] "/admin/code_image/5"): 
    actionpack (4.1.4) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' 
    actionpack (4.1.4) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
    railties (4.1.4) lib/rails/rack/logger.rb:38:in `call_app' 
    railties (4.1.4) lib/rails/rack/logger.rb:20:in `block in call' 
    activesupport (4.1.4) lib/active_support/tagged_logging.rb:68:in `block in tagged' 
    activesupport (4.1.4) lib/active_support/tagged_logging.rb:26:in `tagged' 
    activesupport (4.1.4) lib/active_support/tagged_logging.rb:68:in `tagged' 
    railties (4.1.4) lib/rails/rack/logger.rb:20:in `call' 
    actionpack (4.1.4) lib/action_dispatch/middleware/request_id.rb:21:in `call' 
    rack (1.5.2) lib/rack/methodoverride.rb:21:in `call' 
    rack (1.5.2) lib/rack/runtime.rb:17:in `call' 
    activesupport (4.1.4) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call' 
    rack (1.5.2) lib/rack/lock.rb:17:in `call' 
    actionpack (4.1.4) lib/action_dispatch/middleware/static.rb:64:in `call' 
    rack (1.5.2) lib/rack/sendfile.rb:112:in `call' 
    railties (4.1.4) lib/rails/engine.rb:514:in `call' 
    railties (4.1.4) lib/rails/application.rb:144:in `call' 
    rack (1.5.2) lib/rack/lock.rb:17:in `call' 
    rack (1.5.2) lib/rack/content_length.rb:14:in `call' 
    rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service' 
    /usr/share/ruby/webrick/httpserver.rb:138:in `service' 
    /usr/share/ruby/webrick/httpserver.rb:94:in `run' 
    /usr/share/ruby/webrick/server.rb:295:in `block in start_thread' 
    Rendered /usr/local/share/gems/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.8ms) 
    Rendered /usr/local/share/gems/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/routes/_route.html.erb (4.6ms) 
    Rendered /usr/local/share/gems/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/routes/_table.html.erb (1.9ms) 
    Rendered /usr/local/share/gems/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb within rescues/layout (49.8ms) 

мне нужно вставить собственный маршрут в routes.rb Do? Довольно уверен, что запрос работает. Просто не понимаю, почему я не могу отобразить изображение. Не уверен, как отлаживать проблему. Любые подсказки были бы очень полезными. Спасибо за чтение этого.

С уважением

+2

добавить свой файл маршрутов к вопросу –

ответ

0

Для отладки проблемы, необходимо установить, что ошибка, а затем работать, чтобы решить ее:


Ошибка

В любом процессе отладки, вы необходимо начинать с ошибки:

(No route matches [GET] "/admin/code_image/5") 

В этой ошибке четко указано, что для нужного URL нет маршрутов. Это означает, что вам необходимо рассмотреть файл config/routes.rb и как вы определяете вышеупомянутый маршрут.


Маршруты

Судя по вашей ошибки, вы должны иметь файл маршрутов, установленный как при этом:

#config/routes.rb 
namespace :admin do 
    resources :code_image #-> domain.com/admin/code_image/:id 
end 

Протест к этому является то, что вам нужно, чтобы убедиться, что у вас есть code_image_controller.rb в правильном месте & определено правильно:

#app/controllers/admin/code_image_controller.rb #-> notice the /admin folder ;) 
class CodeImageController < ApplicationController 
    def show 
     @code_image = CodeImage.find params[:id] 
    end 
end 

CRUD

Что-то вы должны знать, что при создании CRUD routes в Rails, используя resources директиву, вы получите следующие маршруты созданы автомагически:

enter image description here

Когда вы спрашиваете о создании отдельных маршрутов, если вы используете маршруты, указанные выше, у вас не должно быть проблем с загрузкой определенного ресурса.


ActiveAdmin

Наконец, просто чтобы прояснить путаницу - это означает, как отладки упражнений. Мы не используем ActiveAdmin, и, следовательно, я не могу гарантировать, будет ли это решение работать с ним.

Смежные вопросы