2013-02-01 45 views
0

我對Ruby on Rails很新穎。我只是對devise和rails/ruby​​方法有點熟悉。user_signed_in?

我有登入頁面。我有一個頁面來檢查用戶是否登錄;如果他是,則顯示一個部分,否則顯示另一個部分;

<%= render(user_signed_in? ? '/layouts/signed_in_header' : '/layouts/signed_out_header') %> 

現在,我怎麼能有以上,只有一個html.erb異常?有沒有像Is_not方法的東西?

我不希望在用戶登錄時顯示signed_in_header並且他所在的頁面是not_here_please。它應該顯示在所有其他網頁,如果用戶在簽署

有什麼樣:

<%= render(user_signed_in? ? and page_is_not 'not_here_please' 
'/layouts/signed_in_header' : '/layouts/signed_out_header') %> 

感謝您的幫助,

克里斯。

+1

您可能想要像這樣構造它:render((bool_expr1和bool_expr2)?'sign_in':'sign_out')'。 – maksimov

回答

1

正如馬克西莫夫說:

<%= render((user_signed_in? && controller.action_name != 'not_here_please') ? '/layouts/signed_in_header' : '/layouts/signed_out_header') %> 

隨意在你的病情來使用任何來自controller.action_name不同。我只是覺得這是代表你要求的最合適的方式。

+0

Cool Sparda和maksimov,我會檢查出來。 – CHarris

+0

嗨。在我的控制器文件夾中,我有一個名爲home_controller的控制器。在homecontroller.rb中我有一個名爲'map'的方法。它去:'def map(next line)end'在我的視圖文件夾中我有map.html.erb,所以我推測在邏輯上它是與控制器中的map'方法相關的視圖。但是我的代碼,你建議,' = render((user_signed_in?&& home_controller.map!='map')?'/ layouts/signed_in_header':'/ layouts/signed_out_header')%> 給我一個錯誤:未定義的局部變量或方法'home_controller'爲#<#<等。任何想法可能是錯的?謝謝 – CHarris

+0

好吧,讓我改正:'controller.action_name'必須保留** controller.action_name **就像我寫的那樣,這將返回當前操作。所以基於此,你的條件是'controller.action_name!='map''。 (基本上我想說'controller.action_name'必須保持這樣寫) – Raindal

相關問題