一連のコントローラーからレンダリングする共有 js 応答 (ビュー) が必要です。に住んでいapp/views/shared/success.js.erb
ます。
これは、一部のコンテンツで DOM を変更する、ほとんどのコントローラーの標準的な応答です。ただし、このコンテンツは、それをレンダリングするコントローラーに固有のものです。
問題は、この共有 js ビューから特定のコントローラーのビュー パスを解決する方法がわからないことです。彼は一例です(いくつかの名前空間のコントローラーが含まれています)
# app/controllers/users_controller.rb
class UsersController < ActionController::Base
def create
# do some stuff
render 'shared/success' # .js.erb
end
end
# app/controllers/settings/permissions_controller
class Settings::PermissionsController < ActionController::Base
def create
# do some stuff
render 'shared/success' # .js.erb
end
end
# app/views/users/success.html.erb
<p>Some View code that only relates to <strong>users</strong></p>
# app/views/settings/permissions/success.html.erb
<p>Some View code that only relates to <strong>permission settings</strong></p>
# app/views/shared/success.js.erb
var listItem = '<%= j render "#{insert resolved path to this particular controller instance}/success.html.erb" %>'
$(".list").append(listItem);
私がこれをやりたい理由は、js の応答が常に同じであるためです。変化するのはコンテンツだけです。現在のコントローラーのデフォルトのビュー レンダリング パスを取得する方法について何か考えはありますか?