В сообщении об ошибке, которое вы указали, указано:
No route matches {:action=>"show", :controller=>"attachments_controller", :id=>17}
В файле маршрутов, который вы указали, показаны созданные вами маршруты:
resources :attachments, only: [:index, :new, :create, :destroy]
get "attachments/show" => "attachments#show"
Выполнение маршрутов рейка покажет, что вы создали4 маршрута в первой строке, плюс маршрут, который отвечает на «вложения / шоу».Если вы действительно хотите определить маршрут следующим образом, попробуйте:
get "attachments/:id", to: "attachments/show"
Ваш первый маршрут отвечает только на слово show и не содержит параметров.Последний маршрут будет принимать все, что идет после вложений, и передавать его в действие show контроллера вложений в качестве параметра с именем id.
Конечно, самый простой способ сделать все это - избавиться отвсе это, и просто измените первый маршрут на:
resources :attachments, only: [:index, :new, :create, :destroy, :show]
Позволить рельсам создать маршрут показа для вас точно так же, как и его определение вручную, и, очевидно, читается намного лучше