我的导轨应用程序中安装了一个引擎:
mount Blazer::Engine, at: "blazer"
现在,这个获取请求:
<%= link_to "New Query", new_query_path, class: "btn btn-info" %>
重定向到此:
blazer/assets?action=new&controller=blazer%2Fqueries
而不是
blazer/queries/new
如果我覆盖blazer引擎查询视图并添加
blazer.new_query_path
它的前缀,它会工作正常,但没有它不工作,即使它工作之前我将我的dev分支重新定位到这个。
因为提交太多,所以很难找到问题所在。有没有人知道为什么会突然发生这种情况?
答案 0 :(得分:1)
在您的主应用程序中简单地创建普通控制器.....如下所示
创建欢迎控制器。在该控制器中添加
class WelcomeController<ActionController
def index
redirect_to '/blazer'
end
end
在您的路线上。 rb文件
Add root 'welcome#index'
mount Blazer::Engine => '/blazer'
就是这样,您的引擎现在可以正常运行了
快乐编码
答案 1 :(得分:0)
解决方案是从include Rails.application.routes.url_helpers
中删除module ApplicationHelper
。感谢以上https://stackoverflow.com/users/3210742/rogue的评论
Rails Engine routes do not work without adding the engine prefix
答案 2 :(得分:0)
您需要像这样在您的应用程序中使用Blazer::ApplicationController
# config/initializers/blazer.rb
module Blazer
class ApplicationController < ActionController::Base; end
end
答案 3 :(得分:-1)
您需要在root_path
处安装引擎mount Blazer::Engine, at: '/'
您可以通过在engine.rb中指定以下代码来自动安装引擎
initializer 'blazer', before: :load_config_initializers do
Rails.application.routes.append do
mount Blazer::Engine => '/'
end
end
如果引擎和主机应用程序具有相同的路由,则访问主机路由
main_app.route_path