gpt4 book ai didi

ruby-on-rails - 从 gem 添加 Rails Controller

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:07 26 4
gpt4 key购买 nike

我正在开发一个专门用于 Rails 应用程序的 ruby​​gem,我想从我的 gem 添加一个 Controller ,以便它可以在 Rails 应用程序上使用(类似于 devise 对 RegistrationsController、SessionsController 所做的)。

在 gem 方面:

我试过添加以下内容应用程序/ Controller /samples_controller.rb

class SamplesController < ApplicationController
def index
.
.
end
end

然后在我的 rails 路线上将其添加为:

match 'route' => 'samples#index'

resources :samples

很明显我在那里出了点问题,但我不知道是什么?我是否需要在某个地方明确要求我的 SampleController 或应用程序上的初始化程序?

现在我在访问路线时遇到这个错误

uninitialized constant SamplesController

谢谢:)

最佳答案

假设您的 gem 名为 MyGem,并且您有一个名为 SamplesController 的 Controller ,您希望在应用程序中使用该 Controller 。您的 Controller 应定义为:

module MyGem
class SamplesController < ApplicationController
def whatever
...
end
end
end

并且在您的 gem 目录中,它应该位于 app/controllers/my_gem/samples_controller.rb(不在 lib 文件夹下)。

然后用代码在你的 gems lib/my_gem 文件夹中创建 engine.rb

module MyGem
class Engine < Rails::Engine; end
end

您可以通过在配置文件夹中使用代码编写 creating 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

就是这样。

关于ruby-on-rails - 从 gem 添加 Rails Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10861951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com