如何使来自 Rails 3 引擎的路由可供主机应用程序使用?

2023-12-23

我有一个 Rails 3 应用程序,其中有多个包含附加功能的引擎。每个引擎都是一项单独的服务,客户可以购买访问权限。

然而,我遇到了来自引擎的路由问题,这些路由对于控制器和视图来说并不容易使用。

控制器:

class ClassroomsController < ApplicationController
  ..
  respond_to :html

  def index
    respond_with(@classrooms = @company.classrooms.all)
  end

  def new
     respond_with(@classroom = @company.classrooms.build)
  end

  ..
end

app/views/classrooms/new.html.haml:

= form_for @classroom do |f|
  ..
  f.submit

config/routes.rb在引擎中:

MyEngineName::Engine.routes.draw do
  resources :classrooms
end

config/routes.rb in app:

Seabed::Application.routes.draw do
  mount MyEngineName::Engine => '/engine'
  ...
end

lib/my_engine_name.rb在引擎中:

module MyEngineName
  class Engine < ::Rails::Engine
  end
end

试图去/classrooms/new结果是

NoMethodError in Classrooms#new

Showing app/views/classrooms/_form.html.haml where line #1 raised:
  undefined method `hash_for_classrooms_path' for #<Module:0x00000104cff0f8>

并尝试致电classrooms_path从任何其他视图都会导致相同的错误。 不过我可以打电话MyEngineName::Engine.routes.url_helpers.classrooms_path并让它发挥作用。我想我可能定义了错误的路线,但找不到其他可行的方法。

尝试使用 Passenger(独立和 Apache 模块)和 WEBrick(rails 服务器)运行该应用程序。使用 Git 中的最新 Rails (7c920631ec3b314cfaa3a60d265de40cba3e8135).


我遇到了同样的问题,并在文档 http://edgeapi.rubyonrails.org/classes/Rails/Engine.html:

由于您现在可以在应用程序的路由中安装引擎,因此您无法直接访问应用程序中引擎的 url_helpers。当您在应用程序的路由中安装引擎时,会创建一个特殊的帮助程序来允许您执行此操作。考虑这样一个场景:

# config/routes.rb
MyApplication::Application.routes.draw do
  mount MyEngine::Engine => "/my_engine", :as => "my_engine"
  get "/foo" => "foo#index"
end

现在,您可以在应用程序中使用 my_engine 助手:

class FooController < ApplicationController
  def index
    my_engine.root_url #=> /my_engine/
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使来自 Rails 3 引擎的路由可供主机应用程序使用? 的相关文章

  • 通俗地说,Ruby on Rails ORM 是什么?请解释

    我无法理解 Ruby on Rails 中的 ORM 据我了解 表 列和对象 属性之间存在 1 1 的关系 所以每条记录都是一个对象 另外 模型到底是什么 我知道它映射到一张桌子 我真正追求的是对上述内容有更深入的理解 预先感谢您的帮助 我
  • Rails 命令有什么区别:--no-test-framework、--skip-test-unit 和 -T?

    原本我以为这三者都是一样的 但现在仔细一看 却发现它们各有不同 我通过搜索找不到任何关于此的好的文档 根据导轨API http api rubyonrails org classes Rails Generators Base html a
  • Ruby on Rails 中的枚举

    我是一名 C 程序员 我正在研究 ruby on Rails 但我可能在心态或其他方面遇到了一些麻烦 我有一个投票对象 该对象可以是赞成 中立或反对 我通常会让投票对象有一个像这样的字段 private VoteEnum voteEnum
  • 查找具有唯一两列组合的所有行

    我有这张桌子messages sender id recipient id 1 2 1 3 1 3 2 1 3 1 2 3 我希望选择这样的行 Either sender id or receiver id current user id
  • 我可以将我的heroku git repo导入bitbucket吗?如何?

    我的笔记本电脑坏了 我需要从另一台计算机上编码 我正在使用 Heroku 我想将最新版本的代码从 Heroku 获取到另一台机器 据我了解 强烈建议使用 GitHub 或 BitBucket 获取适当的远程存储库 我决定尝试一下 BitBu
  • 未使用 form_with 显示时出错

    早上好 我正在按照教程进行操作http edgeguides rubyonrails org getting started html http edgeguides rubyonrails org getting started html
  • Rails 创建 schema_migrations - Mysql2::Error: 指定的键太长

    我正在使用Rails 3 2 6和Mysql 6 0 9 但我在MySQL 5 2 25上有完全相同的错误 当我创建新数据库时 rake db create 然后当我尝试加载架构时 rake schema load 我收到此错误 Mysql
  • 将 ActiveAdmin 用户与现有用户模型合并

    我在项目早期就设置了 ActiveAdmin 并使用了默认值admin users认证模型 从那以后 我使用 Devise 建立了一个单独的用户模型 并意识到合并两个表可能会更明智 这样管理员就可以在 Activeadmin 和站点前端中进
  • Ruby - :variable 和 @variable 之间的区别

    作为 Ruby on Rails 新手 我知道 和 引用具有不同的含义 我看见这个帖子 https stackoverflow com questions 3538575 whats the difference between and v
  • 将 Rails 5.2 升级到 6.0 时出现参数错误数量错误

    我正在尝试将旧站点从 Rails5 2 升级到 6 0 然后再升级到 6 1 推荐的路径 我收到了有关参数数量错误的各种错误 其中一些错误我已通过更新或删除各种 gem 设法清除 最后我被困在了这一点上 rbenv versions 3 0
  • 初始化会破坏rails中的布局设置吗?

    在其中一个控制器中 我需要特定的布局 我添加了layout一开始 效果很好 但如果我添加一个initialize某些基于控制器的变量的函数 Rails 似乎只是忽略了layout命令 有人有同样的问题吗 我该如何修复它 class Admi
  • Rails:将参数从视图传递到控制器

    我在 Rails 中有以下模型 class Task lt ActiveRecord Base attr accessible description name project belongs to project validates na
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • 使用 PostgreSQL 的模式和 Rails 创建多租户应用程序

    我已经想通的事情 我正在学习如何在 Rails 中创建多租户应用程序 该应用程序根据用于查看应用程序的域或子域来提供来自不同模式的数据 我已经回答了一些问题 如何让 subdomain fu 也能与域一起使用 这是有人问了同样的问题 htt
  • Ruby on Rails link_to 与 put 方法

    我是 Rails 新手 我正在尝试使用 link to 帮助程序创建一个发出 PUT 请求而不是 GET 请求的链接 具体来说 我正在尝试创建一个链接 从管理员面板激活我的应用程序中的用户帐户 我正在使用 Rails 3 0 5 我的rou
  • 带分页的 Rails 随机活动记录

    我需要查找特定资源的所有记录并以随机顺序显示它们 但具有一致的分页 如果开始分页 您将不会看到相同的记录两次 每次用户访问页面时 显示顺序都应该是随机的 我在用将分页 http wiki github com mislav will pag
  • 如何显示 RSpec 测试生成的 SQL 查询日志?

    我正在为我的 Rails 3 应用程序编写规范 我想测试数据库事务是否真的有效 如果能够看到我的应用程序在规范驱动下生成的 sql 查询 这将非常有帮助 有没有办法像在 Rails 控制台中一样查看查询 我正在使用 Rails 3 0 9
  • Rails:验证字符串的最小和最大长度,但允许其为空白

    我有一个想要验证的字段 我希望该字段能够留空 但如果用户输入数据 我希望它采用某种格式 目前我在模型中使用以下验证 但这不允许用户将其留空 validates length of foo maximum gt 5 validates len
  • 为什么每个方法需要将其循环的值分配给变量?

    在 Rails 上工作 发现我对 Rails 的理解缺乏知识each method 不知道为什么each方法需要变量 message h2 h2 不确定为什么每个方法都需要变量 message 事实并非如此require它 你完全可以忽略它
  • 资产:预编译 - 权限被拒绝 - 仅在一台计算机上

    我的 dropbox 文件夹中有一个 Rails 应用程序项目文件夹 我在 2 台电脑上工作 家用电脑和笔记本电脑 均为 win 7 If I do bundle exec rake assets precompile在电脑上运行正常 我看

随机推荐

  • git add 命令失败并继续运行

    我运行命令 git add and get Killed 9 它阻止我运行任何带锁的 git 命令 我的 git 有什么问题 我尝试重新启动 删除目录并从新的存储库开始 我能够通过添加一些东西 不应该在 Git 中 来解决同样的问题 git
  • Fluent NHibernate 错误:实体“ClassMap`1”没有映射的 Id

    我正在将以前的项目从使用普通 NHibernate hbm xml 映射转换为 Fluent NHibernate 目前 我陷入了让这项工作发挥作用的最后步骤之一 我为 DefaultAutomappingConfiguration 添加了
  • VS Code 无法识别 Typescript 内部模块

    我正在尝试使用内部模块将我的打字稿类分隔在单独的文件中 但是 main ts 文件不会加载或识别子模块 main ts
  • 使用最新更新构建发布 apk 时出错

    我最近将我的机器上的 Android Studio 更新到版本 Android Studio 3 1 Build AI 173 4670197 built on March 22 2018 JRE 1 8 0 152 release 102
  • 从 netty ByteBuf 获取字符串

    如何从netty中获取字符串ByteBuf 到目前为止 我能够逐个字符地获取它 有没有办法直接获取字符串对象 message is of type ByteBuf for int i 0 i lt message capacity i by
  • 成为网络安全专家的步骤

    我一直在编码C Matlab 以及用于科学目的的类似语言已经有一段时间了 但我最近想进入网络编程 我已经自学了HTML and CSS我已经涉足Javascript PHP and mySQL 我真的很想开始制作更先进的 用户驱动的网站 如
  • Angular 4+ ngOnDestroy() 投入使用 - 销毁 observable

    在有角度的应用程序中 我们有ngOnDestroy 组件 指令的生命周期钩子 我们使用此钩子取消订阅可观察量 我想清除 销毁在 injectable 服务 我看到一些帖子是这么说的ngOnDestroy 也可以在服务中使用 但是 这是一个好
  • 时间复杂度有何不同?

    如果先存储然后使用该值是否会节省时间 例如 while i
  • Windows Azure 基本身份验证

    我需要在 Windows Azure 上设置一个测试网站 通常为了防止随机的人查看它 我会使用某种简单的密码设置基本身份验证来过滤人员 Windows Azure 似乎没有这个选项 有哪些替代方案 到目前为止 我正在考虑实施另一级别的表单身
  • 如何将所有图像从 ACR 存储库导入到不同租户中的另一个 ACR

    设想 我在 ACR azure 容器注册表 中有 4 个存储库 每个存储库中有多个图像 我想将所有存储库和其中的所有图像移动到不同的 ACR azure 容器注册表 我做了什么 我已使用以下命令将 ACR azure 容器注册表 存储库中的
  • 如何在 Django 中配置注销后重定向到哪里?

    只是想知道我可以在哪里设置注销后重定向到的网址 我知道你可以设置登录网址 我想重定向到我的主页 现代 Django 2017 有一个名为LOGOUT REDIRECT URL 老姜戈 原始答案 您不需要覆盖或包装任何内容 根据文档 您只需提
  • 状态机图如何表示为 UML 中操作的行为?

    行为 方法体 可以是状态机或活动 活动很容易理解 因为它们相当于过程代码 我不明白如何将状态机用作操作的行为 您能提供一个简单的例子吗 笔记 操作是一个仅规范的元素 将其想象为 OO 编程语言中的方法签名 它有一个名称和一个参数列表 行为
  • 为什么使用 constexpr 初始化变量是在运行时而不是编译时评估

    据我了解 关键字constexpr告诉编译器表达式的求值可以在编译时发生 具体来说 constexpron 变量意味着可以在编译时计算变量的值 而constexpr在函数上意味着可以在编译时调用该函数并计算其返回值 如果该函数在运行时被调用
  • Excel 根据单元格值定义范围

    是否可以根据单元格中给定的值定义范围 因此 例如 我的选择是 A1 A5 即五个单元格 是否可以让 Excel 通过将单元格值 如 B1 设置为 5 来确定这一点 其目的是通过单元格值的一次更改轻松更改许多范围 因此 如果我将单元格值 B1
  • 如何在intellij Idea中打开临时/预览选项卡

    我喜欢 VS Code 和 sublime 编辑器 特别是它们预览文件的默认行为 当您从文件资源管理器平移中单击文件时 它将在临时选项卡中打开它 除非在文件中进行了更改或双击文件打开它 这会在持久选项卡上打开它 最近我必须在一个项目中使用
  • 仅在 numpy 中打印实数根

    我有这样的事情 coefs 28 36 50 22 print numpy roots coefs 当然结果是 0 35770550 1 11792657j 0 35770550 1 11792657j 0 57030329 0 j 但是
  • matplotlib.pyplot 没有属性“style”

    我正在尝试按照教程在 matplotlib 中设置样式http matplotlib org users style sheets html http matplotlib org users style sheets html impor
  • 使用 AZ CLI 创建 Azure 应用程序注册时出现问题

    我正在尝试使用可以访问 Windows Azure AD 的更新清单创建 Azure AD 应用程序 我已经能够成功创建 配置新的应用程序注册 但在尝试配置清单时遇到问题 我尝试使用我的 MS 提供的示例代码 https learn mic
  • 如何将服务器加入 Active Directory(域)?

    需要在此服务器上启动一个新的 ASP NET 站点 但需要加入我们的 Active Directory 域 有人知道这是如何完成的吗 您的域的管理员通常会这样做 如果他不知道如何做 他会咨询Microsoft 知识库文章 http supp
  • 如何使来自 Rails 3 引擎的路由可供主机应用程序使用?

    我有一个 Rails 3 应用程序 其中有多个包含附加功能的引擎 每个引擎都是一项单独的服务 客户可以购买访问权限 然而 我遇到了来自引擎的路由问题 这些路由对于控制器和视图来说并不容易使用 控制器 class ClassroomsCont