我想要一个从一堆控制器呈现的共享 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响应总是一样的,只是内容发生了变化。关于如何获得当前控制器的默认视图渲染路径的任何想法?