JSONレスポンスを返すRails APIコントローラが既にあります。フロントエンドのJavascript(モバイルアプリだけでなく)が値をレンダリングするために使用されます。内部APIをRailsビューから呼び出す方法(ReactJSプリレンダリング目的)?
今、私はReactJSを使用してこれらの値をプリレンダリングしたい:
#app/controllers/api/v1/products_controller.rb
module API
module V1
class ProductsController < ApplicationController
def index
@products = Product.all #this could be acomplex multi-line statements.
#rendered in api/v1/products/index.json.jbuilder
end
end
end
end
#app/controllers/products_controller.rb
class ProductsController < ApplicationController
def index
#How to do this efficiently?
@products_json = #Call to internal /api/v1/products/index for prerender purpose.
@user_json = #Call to internal /api/v1/user/show for prerender purpose.
end
end
#app/views/products/index.html.erb
<%= react_component('ProductsList', @products_json, {prerender: true}) %>
<%= react_component('UserProfile', @user_json, {prerender: true}) %>
がどのように効率的に内部/api/v1/products
と/api/v1/user
URLを呼ぶのです(例えば、自分のサーバーにHTTP GETリクエストをすることなく)?私はあなたの意見のためにあなたのAPIのコードを再利用するためにあなたの欲求に同意
def index
@products = Product.all
@products_json render_to_string('/api/v1/products/index', formats: [:json])
# etc...
end
https://github.com/rails-api/active_model_serializersをご覧ください –
ビューとAPIレイヤーを混在させないと、より効率的になるようです同じサーバーへの呼び出しによってビューが生成されます(特に、要求がクライアントから完全に来ない場合)。他のソリューションは、より複雑で保守性が低いです。 – pherris