2016-07-28 42 views
0

我正在一個超級簡單的通訊應用程序,我對這個錯誤感到困惑。爲什麼有nil課程?我只是要求它渲染,所以爲什麼我不能把redirect_to調用render我收到錯誤未定義的方法'空?'爲零:NilClass

<% if admin_signed_in? %> 

    <p id="notice"><%= notice %></p> 

    <h1>Subscribedusers</h1> 

    <table> 
<thead> 
    <tr> 
    <th>Email</th> 
    <th colspan="3"></th> 
    </tr> 
</thead> 

<tbody> 
<% @subscribedusers.each do |subscribeduser| %> 
    <tr> 
    <td><%= subscribeduser.email %></td> 
    <td><%= link_to 'Show', subscribeduser %></td> 
    <td><%= link_to 'Edit', edit_subscribeduser_path(subscribeduser) %></td> 
    <td><%= link_to 'Destroy', subscribeduser, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 
    <% end %> 
</tbody> 
</table> 

<br> 

<%= link_to 'New Subscribeduser', new_subscribeduser_path %> 

<% else %> 

<%= render '/' %> 

<% end %> 

爲什麼代碼<%= render '/' %>觸發這部分的undefined method 'empty?' for nil:NilClass錯誤?

+0

你想用'render'/''實現什麼? –

+0

我希望它回到主頁 –

回答

0

因爲你的願望是給用戶返回到主頁,而不是

render '/' 

你應該使用

redirect_to root_path 

不同的是render準備輸出顯示爲結果當前請求和redirect_to命令用戶的瀏覽器在指定的URL請求新的請求。

雖然可以在任意操作中呈現主頁的內容,但這種情況很少需要。一個缺點是頁面網址不會自動更新到瀏覽器地址欄中的網站根目錄。

請注意,render '/'不是正確的語法。 rendergenerally accepts選項的散列而不是字符串。

+0

它的工作!謝謝 –

0

爲什麼你有沒有任何條件循環的<%else%>子句?你打算用<%渲染'/'%>嗎?你是否打電話給索引頁?如果是這樣,你可以指定<%渲染「索引」%>。

+0

對不起,有一個if條件,我沒有在代碼中正確包含它,仍然得到相同的錯誤,雖然 –

0

所以你不需要如果和其他塊在視圖方面頁面重定向到根路徑。 從你的控制器的任何操作你需要下面的代碼。

if admin_signed_in? redirect_to root_path end

還刪除if和else block from view。

相關問題