0

的LoginController:無法存儲的cookie中的Rails

class LoginController < ApplicationController 
def new 
    cookies[:id]=rand(1000) 
    render "index" 
end 
end 

index.html.erb:

<body> 
    <center> 
    <h1> Login </h1> 
    <form action='login/auth' method='POST'> 
     Name: <input type="text" name="name" widht=20><br> 
     Password: <input type="password" name="pass" widht=20><br> 
     <input type="submit" value="submit"> 
    </form> 
    </center> 
    <br><br> 
</body> 

我的要求是,如果登錄頁面被調用時,響應頁面應該以發送cookie。所以,我在 新動作中用隨機數字創建了一個cookie。但是「index.html」頁面在瀏覽器中沒有cookie。但是,如果「新」操作將其默認視圖文件 「new.html.erb」稱爲它,則其工作正常。爲什麼cookie只能在默認視圖中使用,而不能在其他視圖文件中使用。如何解決這個問題呢 ?

+1

在這兩種情況下你的新動作是否被執行? –

+0

@FrederickCheung我的意思是,只有當動作和視圖名稱相同時,才能訪問「cookies []」。例如:在提交表單'/ login/auth'時,auth.html.erb僅適用。如果我們故意渲染其他頁面,那麼Cookie不會隨該頁面一起提供。 – mrg

回答

0

僅供參考,您在表單中有兩個拼寫錯誤。 「寬度」鍵入爲「widht」。

<form action='login/auth' method='POST'> 
    Name: <input type="text" name="name" widht=20><br> 
    Password: <input type="password" name="pass" widht=20><br> 
    <input type="submit" value="submit"> 
</form> 

這不會解決問題,但一旦問題解決後它將刪除一個錯誤。

與原始問題相關,我想知道是否可以當你想將一個變量傳遞給一個非默認視圖時,你可能需要一個實例變量(但由於cookie不是以實例變量的形式表示,我不知道該去哪裏)

+0

這與問題根本無關。 –

+0

@HolgerJust你能解決這個問題嗎? – mrg

+0

但根據參考文獻,它們僅指定「cookies [:id] = user.id」。 – mrg