Не найдено ни одного маршрута {:action=>"show",:controller=>"spree/taxons",:id=>nil}
Привет программистам RoR,
Я застрял в настраиваемых кодах приложений spree, которые привели к ошибкам после обновления до rails 5.1.5.
Пума записал эту ошибку:
Ошибка при отказоустойчивом ответе: не найдено ни одного маршрута {:action=>"show",:controller=>"spree/taxons",:id=>nil}, возможные несоответствующие ограничения: [: id]
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action_dispatch/journey/formatter.rb:55:ingenerate'
генерировать"
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action_dispatch/routing/route_set.rb:748:in
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action_dispatch/routing/route_set.rb:779:ingenerate'
блок в генерации
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing_filter/adapters/rails.rb:30:in
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing_filter/filters/locale.rb:70:inaround_generate'
бежать'
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing_filter/filter.rb:11:in
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing_filter/chain.rb:15:inrun'
генерировать"
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing_filter/adapters/rails.rb:29:in
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action_dispatch/routing/route_set.rb:826:inurl_for'
вызов'
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action_dispatch/routing/route_set.rb:277:in
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action_dispatch/routing/route_set.rb:335:inblock (2 levels) in define_url_helper'
nested_taxons_path"
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action_dispatch/routing/routes_proxy.rb:42:in
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action_dispatch/routing/routes_proxy.rb:45:inmethod_missing'
seo_url"
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spree_core-3.4.4/app/helpers/spree/base_helper.rb:79:in
/home/ypill/wuxu18/app/views/spree/frontend/ypill/_main_nav_bar.html.erb:16:in `блок (3 уровня) в _d16a1d9612a1846710427ba2d762257f'
приложение / контроллеры / Шпрее /taxons_controller.rb:
module Spree
class TaxonsController < Spree::StoreController
helper 'spree/products', 'spree/taxon_filters'
respond_to :html
def show
@taxon = Taxon.friendly.find(params[:id])
return unless @taxon
@searcher = build_searcher(params.merge(taxon: @taxon.id, include_images: true))
@products = @searcher.retrieve_products
@taxonomies = Spree::Taxonomy.includes(root: :children)
Шпрее / интерфейс / конфигурации / routes.rb:
# route globbing for pretty nested taxon and product paths
get '/t/*id', to: 'taxons#show', as: :nested_taxons
В spree / core / app / helpers / spree / base_helper.rb:
def seo_url(taxon)
spree.nested_taxons_path(taxon.permalink)
end
Строка 79: spree.nested_taxons_path(taxon.permalink)
method_missing' or undefined method
постоянная ссылка на ноль:NilClass
настраиваемый код файла _main_nav_bar.html.erb, ошибка в журнале puma из строк 16, 14, 13, 12:
<% @taxonomies ||= Spree::Taxonomy.includes(root: :children) %>
<% max_level = Spree::Config[:max_level_in_taxons_menu] || 1 %>
<div class="navbar-header">
<div class="container">
<nav class="navbar" id="cssmenu">
<ul class="navbar-nav">
<li id="home-link"
class="<%= ('active' if @page.nil? && @taxon.id == 12) unless @taxon.nil? %>"
data-hook><%= link_to Spree.t(:home), spree.root_path %></li>
<%#= @taxon.inspect %>
<% @taxonomies.each do |taxonomy| %>
<% cache [I18n.locale, taxonomy, max_level] do %>
<% taxonomy.root.children.each do |taxon| %>
<li class="<%= (taxon.id == @taxon.id ? 'active' : '') unless @taxon.nil? %>">
<%= link to taxon.name, seo_url(taxon) %>">
</a>
</li>
<% end %>
<% end %>
<% end %>
</ul>
</nav>
Строка 12:
<% @taxonomies.each do |taxonomy| %>
строка 13:
<% cache [I18n.locale, taxonomy, max_level] do %>
Строка 14:
<% taxonomy.root.children.each do |taxon| %>
Строка 16
<%= link to taxon.name, seo_url(taxon) %>
В блоке (3 уровня) puma ищет метод seo_url для spree_core-3.4.4/app/helpers/spree/base_helper.rb:79 метод spree.nested_taxons_path(taxon.permalink)'отсутствует.
main_nav_bar.html.erb работал на рельсах 4.2.
Любая помощь приветствуется.
1 ответ
Попробуйте этот маршрут:
get '/t/*id', to: 'spree/taxons#show', as: :nested_taxons