2012-04-18 78 views
3

我想要一个共享的js响应(视图),我从一堆控制器渲染。它住在app/views/shared/success.js.erb解决在Rails 3.2中的控制器的视图路径

这是我的控制器的大多数的标准响应,它修改了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的响应总是相同的原因,它只是改变了内容。关于如何获取当前控制器的默认视图渲染路径的任何想法?

回答

0

您可以通过访问当前动作名称:

params[:action] 

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

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

相关问题