2012-04-18 5 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보기에서 예상되는 값으로 이러한 컨트롤러에서 인스턴스 변수를 설정하고보기에서 사용하기 만하면됩니다.

관련 문제