Tôi đã đăng bài này lúc đầu tiên là an issue on rails_api GitHub, nhưng hiện tại tôi đã đăng nó ở đây do không hoạt động.Sử dụng rails_admin với rails_api
Tôi đang cố gắng sử dụng rails_admin
với ứng dụng API Rails 5. Tôi bao gồm các mô-đun ActionController bổ sung cho đến điểm mà tôi có thể có một bảng điều khiển rails_admin hoạt động hoặc các yêu cầu API làm việc. Vấn đề dường như là rails_admin phụ thuộc vào ActionView::Layouts
, mà sau khi đưa vào gây ra sự cố cho các yêu cầu API.
Gemfile:
gem 'rails', '>= 5.0.0.beta3', '< 5.1'
...
gem 'rack-pjax', github: 'afcapel/rack-pjax'
gem 'remotipart', github: 'mshibuya/remotipart'
gem 'kaminari', github: 'amatsuda/kaminari', branch: '0-17-stable'
gem 'rails_admin', github: 'sferik/rails_admin'
tôi cấu hình ứng dụng của tôi sử dụng ActionDispatch::Flash
:
module MyApp
class Application < Rails::Application
...
config.middleware.use ActionDispatch::Flash
end
end
I configured extra modules for Rails API, ApplicationController:
class ApplicationController < ActionController::API
include Knock::Authenticatable
include Pundit
# RailsAdmin support
include AbstractController::Helpers
include ActionController::Flash
include ActionController::RequestForgeryProtection
include ActionController::MimeResponds
include ActionController::HttpAuthentication::Basic::ControllerMethods
include ActionView::Layouts
end
Với những thay đổi bảng điều khiển Rails quản lý có vẻ chạy tốt . Tuy nhiên, khi tôi đang cố gắng để truy cập vào các nguồn tài nguyên JSON trong ứng dụng của tôi, các lỗi sau được ném:
Error:
BookingsControllerTest#test_should_get_index:
ActionView::MissingTemplate: Missing template bookings/index, application/index with {:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :haml]}. Searched in:
* "/Users/richard/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/bundler/gems/rails_admin-355dc80f8a20/app/views"
Các mã kiểm tra (cũng đã cố gắng thêm format: :json
):
class BookingsControllerTest < ActionController::TestCase
test 'should get index' do
get :index
assert_response :success
end
end
Đây là bộ điều khiển mã:
class BookingsController < ApplicationController
def index
@bookings = find_bookings
render json: @bookings, include: ['customer', 'client'], meta: meta
end
end
này chỉ xảy ra sau khi tôi bao gồm các module ActionView::Layouts
trong top đẳng ActionController::API
để hỗ trợ Rails quản trị.
gì là trong 'bạn BookingsControllerTest'? Tôi nghĩ rằng nó sẽ giúp để biết, vì đó là nơi mà vấn đề là ... – Uzbekjon
@Uzbekjon thêm. – richard
Bạn đã thử sử dụng [ActiveModel :: Serializers] (https://github.com/rails-api/active_model_serializers) như rails-api đề xuất? – trueinViso