ruby-on-rails – 从gem添加一个Rails控制器

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 从gem添加一个Rails控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个专门用于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

而已.

原文链接:https://www.f2er.com/ruby/266574.html

猜你在找的Ruby相关文章