在Rails 3.2中解析控制器的视图路径

时间:2012-04-18 13:38:27

标签: ruby-on-rails-3 view rendering

我想要从一堆控制器渲染的共享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响应总是相同的,它只是改变的内容。关于如何获取当前控制器的默认视图渲染路径的任何想法?

1 个答案:

答案 0 :(得分:0)

您可以使用以下方式访问当前操作名称:

params[:action]  

然后您可以相应地自定义视图。

或者,您可以在.js视图中使用您期望的值在这些控制器中设置实例变量,并在视图中使用它。