在视图中调用命名路由助手以NameError结束以进行以下配置:
routes.rb
:
scope :orders, as: :orders do
scope '/:order_id', as: :order do
post :returns, :to => 'order_returns#create'
end
end
$rake routes
:
orders_order_returns POST /orders/:order_id/returns(.:format) order_returns#create
当我向模板添加<%= orders_order_returns_path %>
时,Rails
退出undefined local variable or method 'orders_order_returns_path' for #<#<Class:0x007faec10fe728>:0x007faec10dc8d0>
...
在异常页面的控制台中执行Rails.application.routes.named_routes.helpers.map(&:to_s)
返回:
["spree_path", "orders_order_returns_path", "rails_info_properties_path", "rails_info_routes_path", "rails_info_path", "rails_mailers_path", "spree_url", "orders_order_returns_url", "rails_info_properties_url", "rails_info_routes_url", "rails_info_url", "rails_mailers_url"]
我的问题是:为什么在视图中使用命名路径path / url helpers以异常结束,即使它们在控制台中可见?
答案 0 :(得分:1)
我找到了答案here:
因为您在狂欢模板中调用此内容,因此需要在
main_app.
前面添加main_app.products_starting_with_path
,如main_app
这是Spree的发行说明:
相反,引用来自主要应用程序的路径 来自Spree的控制器,视图或模板,您必须使用
main_app
路由代理
使用[Fact]
public void Test_LogMessages()
{
InitAppSink();
var logger = new LoggerConfiguration().ReadFrom.AppSettings()
.WriteTo.Sink(testSink)
.MinimumLevel.ControlledBy(_levelSwitch)
.CreateLogger();
logger.Information("Information Test Log Entry");
logger.Debug("Debug Test Log Entry");
((IDisposable)logger).Dispose();
}
路由代理解决了所描述的问题:)