加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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).

宝石方面:

我已经尝试添加以下内容
应用程序/控制器/ samples_controller.rb

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

而已.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读