ruby-on-rails – 从gem添加一个Rails控制器
发布时间:2020-12-16 22:00:36 所属栏目:百科 来源:网络整理
导读:我正在开发一个专门用于Rails应用程序的 rubygem,我想从我的gem添加一个控制器,以便它可以在Rails应用程序上使用(类似于 devise与RegistrationsController,SessionsController). 宝石方面: 我已经尝试添加以下内容 应用程序/控制器/ samples_controller.rb
我正在开发一个专门用于Rails应用程序的
rubygem,我想从我的gem添加一个控制器,以便它可以在Rails应用程序上使用(类似于
devise与RegistrationsController,SessionsController).
宝石方面: 我已经尝试添加以下内容 class SamplesController < ApplicationController def index . . end end 然后在我的轨道路线上添加它作为: match 'route' => 'samples#index' 要么 resources :samples 显然我在那里有些错误,但我不知道是什么?我需要明确地要求我的SampleController在某个地方或应用程序的初始化程序吗? 现在我在访问路由时收到此错误 uninitialized constant SamplesController 谢谢 :) 解决方法
让我们假设你的宝石叫做MyGem,你有一个控制器叫做SamplesController你想在应用程序中使用.您的控制器应定义为:
module MyGem class SamplesController < ApplicationController def whatever ... end end end 在你的gem目录中,它应该存在于app / controllers / my_gem / samples_controller.rb(不在lib文件夹下). 然后在您的宝石lib / my_gem文件夹中使用代码创建engine.rb module MyGem class Engine < Rails::Engine; end end 您可以通过在配置文件夹中使用代码创建routes.rb来在您的gem中写入路由 # my_gem/config/routes.rb Rails.application.routes.draw do match 'route' => 'my_gem/samples#index' end 最终结构这样的东西 ## DIRECTORY STRUCTURE # - my_gem/ - app/ - controllers/ - my_gem/ + samples_controller.rb - config/ + routes.rb - lib/ - my_gem.rb - my_gem/ + engine.rb + version.rb + my_gem.gemspec + Gemfile + Gemfile.lock 而已. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |