ウィジェットをサーバーするコントローラーがあります。
class WidgetsController < ApplicationController
def widget1
respond_to do |format|
format.html
format.js { render js: js_constructor }
end
end
def widget2
respond_to do |format|
format.html
format.js { render js: js_constructor }
end
end
private
def js_constructor
content = render_to_string(params[:action], layout: false)
"document.write(#{content.to_json})"
end
end
このコントローラーは大きくなるので、すべてのアクションでこのコード ブロックを繰り返さないようにしたいと思います。
respond_to do |format|
format.html
format.js { render js: js_constructor }
end
何か案が?
編集:コンテキストを提供するためだけに...
ルートはフレキシブル/ダイナミックです:get 'widgets/:action', to: 'widgets#:action'
したがって、私がアクセスwidgets/widget1
すると、ビューがレンダリングされますwidget1.html.erb
。
スクリプトを別のサーバーに含めると、widget1 が構築されます。
<script type='text/javascript' src='http://localhost:3000/widgets/widget1.js'></script>