2017-02-15 12 views
2

Я создал приложение Rails для API-интерфейса, но мне нужна административная область для управления данными. Поэтому я создал этот контроллер:Как добавить помощников в API-интерфейсе Rails-приложения

require 'rails/application_controller' 
require_relative '../helpers/admin_helper' 
class AdminController < Rails::ApplicationController 
    include AdminHelper 
    def index 
    @q = Promotion.search(params[:q]) 
    @promotions = @q.result(distinct: true).page(params[:page]).per(30) 
    render file: Rails.root.join('app', 'views', 'admin', 'index.html') 
    end 
end 

Бот Я не могу получить доступ к помощнику, даже требуя модуля. Посмотрите на Helper:

module AdminHelper 
    def teste 
    'ok' 
    end 
end 

И генерируется ошибка:

ActionController::RoutingError (uninitialized constant AdminController::AdminHelper): 

ответ

2

Таким образом, я был в состоянии сделать эту работу в новом приложении, запущенном rails new my_api_test_app --api, а затем в том числе ниже файлов. Я не думаю, что вам нужны инструкции require в контроллере. Вы можете просто включить помощника, как вы это сделали. Я включил расположение структуры файлов, которые я использовал для каждого файла (в частности, я поставил помощник в app/helpers/admin_helper.rb, который может быть то, что вам нужно для файла, чтобы загрузить правильно.

#app/controllers/admin_controller.rb 
class AdminController < Rails::ApplicationController 
    include AdminHelper 
    def index 
    test 
    render file: Rails.root.join('app', 'views', 'admin', 'index.html') 
    end 
end 


#app/helpers/admin_helper.rb 
module AdminHelper 
    def test 
    puts "tests are really fun" 
    end 
end 

#config/routes 
Rails.application.routes.draw do 
    root 'admin#index' 
end 

#index.html.erb 
Hello World! 

И в рельсах лаг, я получить это:

app/controllers/admin_controller.rb:5:in `index' 
Started GET "/" for 127.0.0.1 at 2017-02-15 15:26:32 -0800 
Processing by AdminController#index as HTML 
tests are really fun 
    Rendering admin/index.html.erb within layouts/application 
    Rendered admin/index.html.erb within layouts/application (0.3ms) 
Completed 200 OK in 8ms (Views: 8.0ms | ActiveRecord: 0.0ms) 

Обратите внимание, что tests are really fun напечатанный в журнале

+0

действительно работает, очень спасибо.! –

 Смежные вопросы

  • Нет связанных вопросов^_^