我在活动记录类上有一个方法,它为消息传递系统呈现ERB模板。简化代码如下所示:
ERB.new(template).result(binding)
其中binding
是ActiveRecord模型对象的当前绑定,template
是从文件系统读入的erb模板文件。
我想在模板中使用一些命名路由,但是无法使命名路由可用。
我已经看到所有帖子都说明要包含/要求以下各种组合到当前的ActiveRecord模型中(或者最好是单例):
include ActionView::Helpers::TagHelper
include ActionView::Helpers::AssetTagHelper
include ActionController::UrlWriter
require 'action_controller/routing'
include ActionController::Routing
include ActionController::Routing::Routes
include ActionController::Routing::NamedRoutes
其中一些错误,我认为根本不正确...其他我看不到任何好处,因为路线仍然不起作用。有没有人有想法?
答案 0 :(得分:1)
我使用:
将所有命名的路由和标记助手都绑定到绑定中class << self
include LegacyUrlsHelper #a proprietary module
include ActionView::Helpers::TagHelper
include ActionView::Helpers::AssetTagHelper
include ActionView::Helpers::UrlHelper
include ActionController::UrlWriter
end
唯一的问题可能是设置default_url_options [:host],我还没有测试。
答案 1 :(得分:0)
尝试“include ApplicationController”
答案 2 :(得分:0)
我认为你正以错误的方式接近这一点。 MVC就是将模型与视图和控制器分离。您正试图让您的模型访问View,这不应该在Rails中完成。
有点问题,为什么?除非您计划将渲染的模板存储在模型中,否则您将采用错误的方式。即便如此,还有更好的方法。
例如在创建/更新时调用render:控制器中的部分。
包括所有这些额外的课程会让你的模型陷入困境。
答案 3 :(得分:0)
你真的只需要:
include ActionView::Helpers::UrlHelper include ActionController::UrlWriter
如果您尝试使用任何default_url_options[:host]
方法或_url
而不只是url_for
{{1>,您还需要设置 }}