Ruby on Rails 3을 사용하고 있는데 컨트롤러 (예 : AccountsController)에서만 작동해야하는 helper_method
을 설정하려고합니다. 해당 컨트롤러와 관련이없는 다른보기에서 렌더링됩니다. 나는 Railcast "Restricting Access"에서 영감을 얻었습니다. 내 accounts_controller.rb 파일에서'helper_method'을 사용하는 데 문제가 있고 템플릿을 렌더링하는 데 어려움이 있습니다.
나는 나가를 검색하면 위의 코드가 작동 내가
<% if show_authorization %>
You are authorized!
<% else %>
You are NOT authorized!
<% end %>
을 내보기/사용자/계정/show.html.erb 파일에서
# Just to know, I am using a User namespace...
class Users::AccountsController < ApplicationController
helper_method :show_authorization
def show_authorization
false # This returning value is just an example
end
end
이 URL http://<my_app_name>/users/accounts/1
하지만 난 다른보기 파일의 템플릿으로 식으로 show.html.erb
파일을 렌더링하는 경우 :
<%= render :template => "https://stackoverflow.com/users/accounts/show", :locals => { :account => @account } %>
,536을
NameError in Users#show
undefined local variable or method `show_authorization' for #<#<Class:...>
이유 :
나는 오류가? AccountsController show_authorization
메서드를 show.html.erb
뷰에서 다른 컨트롤러와 관련된 다른 뷰에서 렌더링 할 수 있도록하려면 어떻게 해결할 수 있습니까?
P. : show_authorization
은 AccountsController 및 뷰 파일에만 관련되어 있으므로 관련 코드를 'application_controller.rb'파일에 삽입하지 않고 'accounts_controller.rb'파일에 그대로 두는 것이 좋습니다.
업데이트 된 대답을 참조 – Sigurd