2017-05-07 33 views
0

總共有兩種型號:一種叫業務,另一個是用戶,用戶裏面我也有一個管理布爾屬性。我爲他們生成了兩個設計。然而,當我使用如何使user_signed_in工作(多用戶) - 設計

<% if business.signed_in? %> 
    <%= hidden_field_tag 'business', current_business.company_name %> 
    <% elsif user.signed_in? %> 
     <% if current_user.admin? %> 
       <%= hidden_field_tag 'approved', true %> 
     <% end %> 
<% end %> 

在特定視圖中,這樣說視圖對應於一個控制器「對象」,既business_signed_in?user_signed_in?不工作(無法誤差)。任何人都可以幫助我如何修改我的控制器使視圖工作?只有管​​理員和企業可以訪問此特定視圖,但不能訪問其他用戶。

謝謝!

+0

嘗試使用「user_signed_in?而不是'user.signed_in?' –

回答

1

設計用戶signed_in或不是冗餘/不必要的檢查。無論如何,你以後使用的方法是current_user,所以直接檢查一下,將它存儲在一個變量中,並檢查它是否爲present?。如果signed_in,它將返回用戶對象,否則爲零。然後你可以用下面的方法來使用它。

<% if (business = current_business).present? %> 
    <%= hidden_field_tag 'business', business.company_name %> 
<% elsif (user = current_user).present? && user.admin? %> 
    <%= hidden_field_tag 'approved', true %> 
<% end %> 
+0

Thanx @GertArnold,我編輯了答案並解釋了它。 –

+0

非常感謝!它確實有效,但我不確定爲什麼「商業」和「批准」屬性沒有保存?我是否需要在控制器中指定任何內容以將數據保存在hidden_​​field_tag中? (「business」和「approved」都是該模型的屬性,我希望在創建新模型時將隱藏字段標籤中寫入的值保存到它們中。) – Meggie

+0

語法明智,它們看起來不錯,您需要在控制器上調試是否接收這些價值在提交或不提交,如果你使用強烈的參數,它們是允許的,可能有多種原因 –

相關問題