ruby-on-rails – 从我的Ruby on Rails Gem渲染视图
发布时间:2020-12-17 03:17:25 所属栏目:百科 来源:网络整理
导读:我为 Ruby on Rails创建了一个简单的Gem;我的想法是它为我在我的几个应用程序中使用的常见操作(索引/显示/等)提供了一些代码/视图.我想在宝石中“干掉它”. 创建关注点没有问题,但是,我似乎无法在我的应用程序中呈现视图. 例如,在我的lib / rails_default_ac
我为
Ruby on Rails创建了一个简单的Gem;我的想法是它为我在我的几个应用程序中使用的常见操作(索引/显示/等)提供了一些代码/视图.我想在宝石中“干掉它”.
创建关注点没有问题,但是,我似乎无法在我的应用程序中呈现视图. 例如,在我的lib / rails_default_actions / rails_default_actions.rb中,我执行以下操作: module RailsDefaultActions module DefaultActions extend ActiveSupport::Concern respond_to do |format| format.html { render 'default/index' } end end end end 但是提出了一个错误: Missing template default/index with {:locale=>[:en],:formats=>[:html],:variants=>[],:handlers=>[:erb,:builder,:raw,:ruby,:slim,:haml]}. Searched in: * "/home/martin/myapp/app/views" * "/home/martin/myapp/vendor/bundle/ruby/2.1.0/gems/devise-3.2.4/app/views" * "/home/martin/myapp" 我最终设法破解了这个错误,但它感觉非常kludgey并且在某些情况下不起作用.在gem中包含视图的正确方法是什么? 我看过创建一个引擎,但这似乎有些过分,因为我只是有一个问题和一些观点. 解决方法
自Rails 3以来这样做的“正确”方法是创建一个
Engine ;还有
a Rails guide,但创建一个基本的引擎就像:
module MyGemName class Engine < Rails::Engine end end 当Rails查找要呈现的视图时,它将首先查看应用程序的app / views目录.如果它在那里找不到视图,它将检查具有该目录的所有引擎的app / views目录. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |