2016-11-22 37 views
0

您好我在模型/關注這個問題/ permissions_concern如何在rails .erb中調用關注方法?

此檢查我的用戶表和permission_level列其類型爲integer.So如果用戶擁有管理員權限我希望他能夠在導航欄訪問一個特定鏈接

module PermissionsConcern 
    extend ActiveSupport::Concern 
    def is_normal_user? 
     self.permission_level >= 1 
    end 

    def is_editor? 
     self.permission_level >= 2 
    end 

    def is_admin? 
     self.permission_level >= 3 
    end 
end 

我想知道,如果是可以調用模塊的ERB頁面,以便例如:

<li class="nav-item"> 
    <% if is_admin? %> 
     <%= link_to "Dashboard", articles_path, class: 'nav-link' %> 
    <%else%> 
     <li class="nav-item"> 
     <%= link_to 'Login', new_user_session_path, class: 'btn btn-outline-success' %> 
     </li> 
     <li class="nav-item"> 
     <%= link_to 'Register', new_user_registration_path, class: 'btn btn-outline-info' %> 
     </li> 
    <%end%> 

</li> 

但我得到這個錯誤

未定義的方法`is_admin?' #<#:0x007f962f818680>這是好的,因爲不是一種方法。但是有沒有辦法在erb頁面中調用關注?

回答

1

如果很關注,你需要include這或指定的完整路徑:

if PermissionsConcern.is_admin? 

的事情是,你可能想使一個幫手,而不是如果你打算使用它裏面的觀點。那些對self的引用在一個普通的問題中將毫無意義。

1

要給tadman的答案增加一點上下文,關注點通常用於合併多個模型使用的方法。這看起來不像你想要完成的。它看起來像你試圖簡化你的視圖邏輯。要做到這一點,幫手是要走的路。因此,您需要一種方法來尋找當前登錄的用戶並檢查其權限級別。

您有一個名爲application_helper.rb的應用程序範圍的幫助文件。關注(我假設包含在User模型中),而不是is_admin?,您可以將它放在application_helper.rb中,並且它可用於所有視圖。但你會遇到問題! is_admin?方法不會知道用戶,所以它會炸燬。如果您使用設計進行驗證,你應該有一個current_user方法,它引用在記錄的人,你可以在你的application_helper.rb文件更改is_admin?方法:

def is_admin? 
    current_user.permission_level >= 3 
end 

而且你應該所有設置。祝你好運!

有關信息:https://stackoverflow.com/a/25858075/320490

相關問題