Ruby on rails 没有路由匹配{:action=>;show";,:controller=>;spree/taxons";,:id=>;nil}
你好,RoR程序员 升级到rails 5.1.5后,我陷入了定制的spree应用程序代码带来的错误中 puma记录了此错误: 故障保护响应期间出错:没有路由匹配{:操作=>“显示”, :controller=>spree/taxons,:id=>nil},可能不匹配 约束:[:id]Ruby on rails 没有路由匹配{:action=>;show";,:controller=>;spree/taxons";,:id=>;nil},ruby-on-rails,spree-upgrade,Ruby On Rails,Spree Upgrade,你好,RoR程序员 升级到rails 5.1.5后,我陷入了定制的spree应用程序代码带来的错误中 puma记录了此错误: 故障保护响应期间出错:没有路由匹配{:操作=>“显示”, :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\u dispatch/journey/formatt
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action\u dispatch/journey/formatter.rb:55:in
生成'
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action\u dispatch/routing/route\u set.rb:748:in
生成“/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action\u dispatch/routing/route\u set.rb:779:in
生成'
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing\u 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:in
round\u generate'
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing\u filter/filter.rb:11:in
run'/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing\u filter/chain.rb:15:in
run'
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/routing-filter-0.6.1/lib/routing\u 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\u dispatch/routing/route\u set.rb:826:in '
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action\u dispatch/routing/route\u set.rb:277:in 呼叫“
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action\u dispatch/routing/route\u set.rb:335:in
在define_url_helper'
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action\u dispatch/routing/routes\u proxy.rb:42:in
嵌套的分类单元路径'/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/actionpack-5.1.5/lib/action\u dispatch/routing/routes\u proxy.rb:45:in
方法\u缺失'
/root/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/spree\u core-3.4.4/app/helpers/spree/base\u helper.rb:79:in
seo\u url'/home/ypill/wuxu18/app/views/spree/frontend/ypill/_main_nav_bar.html.erb:16:in `_d16a1d9612a1846710427ba2d762257f'中的块(3层) app/controllers/spree/taxons\u 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)
在spree/core/app/helpers/spree/base_helper.rb中:
def seo_url(taxon)
spree.nested_taxons_path(taxon.permalink)
end
第79行:spree.nested\u taxons\u路径(taxon.permalink)
method\u缺少”或未定义的方法
permalink'表示nil: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寻找spree_core-3.4.4/app/helpers/spree/base_helper.rb:79“spree.nested_taxons_path(taxon.permalink)”方法缺失的“seo_url”
main_nav_bar.html.erb在rails 4.2上工作
感谢您的帮助。尝试以下方法:
get '/t/*id', to: 'spree/taxons#show', as: :nested_taxons
这并不能解决这个错误。实际错误可能是“方法丢失”或“未定义的方法”,尽管puma记录了“无路由匹配”
get '/t/*id', to: 'spree/taxons#show', as: :nested_taxons