我正在使用Ruby on Rails 3,我試圖設置一個helper_method
,它應該只適用於控制器(例如:AccountsController)以及與之相關的所有視圖,當它的視圖在與該控制器無關的其他視圖中呈現。我從Railcast "Restricting Access"獲取靈感。使用'helper_method'和呈現模板的問題
在我accounts_controller.rb文件我有
# 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
在我的意見/用戶/帳戶/ show.html.erb文件我有
<% if show_authorization %>
You are authorized!
<% else %>
You are NOT authorized!
<% end %>
上面的代碼工作,如果我瀏覽URL http://<my_app_name>/users/accounts/1
但如果我以這種方式將show.html.erb
文件作爲另一個視圖文件中的模板:
<%= render :template => "https://stackoverflow.com/users/accounts/show", :locals => { :account => @account } %>
我得到的錯誤:
NameError in Users#show
undefined local variable or method `show_authorization' for #<#<Class:...>
爲什麼?我怎樣才能解決這個問題,以便在另一個與另一個控制器相關的視圖中呈現AccountsController show_authorization
方法時可用於show.html.erb
視圖?
P.S.:因爲show_authorization
僅與AccountsController及其視圖文件相關,所以我不想在「application_controller.rb」文件中插入相關代碼,但將其保留在「accounts_controller.rb」中。
看到更新的答案 – Sigurd 2011-03-23 16:44:38