2012-04-18 32 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視圖中的值設置實例變量,並在視圖中使用它。

相關問題