2014-06-08 95 views
1

我試圖找到一種方法,以count在用戶的IP地址過濾的特定按鈕上點擊,因此只有1次點擊被註冊(例如每天)。創建Cookie導軌

現在我沒有試圖爲此找到一個完全穩定的解決方案,只是爲了濾除點擊,以便用戶無法點擊5次並用5次點擊填充計數器。

所以我想,爲什麼不設置一個cookie (cookie[:installed] = true),所以我可以做這樣的事情:

def click_button 
    url_to_redirect 
    unless cookies[:installed] 
     click_counter.increment 
    end 
    end 

(我不知道這是否是一個很好的解決方案,只是集思廣益如果有人。有更好的想法,你更歡迎向我解釋。)

除此之外,我沒有任何運氣實現這個「餅乾解決方案」,雖然我通過Rails API on Cookies讀。

我如何實現這一點,我在哪裏開始? (我讀過在模型中創建邏輯是壞的)。

原諒我Newbieness,乾杯

問題進展情況:

1)在我的控制器的show動作我設置cookie =>

def show 
    cookies[:installed] = false 
    end 
+0

您可以發佈鏈接顯示的視圖代碼和控制器代碼。 –

+0

這是一個簡單的鏈接(link_to「Download」,「#」),它位於SHOW視圖中。控制器的行動是空的,因爲我試圖找到如何實現這一點:) –

+0

如果計數達到5,那麼鏈接不應被點擊? –

回答

0

我寧願店這個信息在會話中,而不是在cookie中。比如像這樣。

def download 
    unless session[:clicked] do 
    session[:clicked] = true 
    do_something #remember to change this 
    end 
end 

您還可以存儲信息的數據庫,以確保用戶無法通過啓動一些其他的瀏覽器或清理餅乾繞過檢查。例如,創建一個Downloader模型,使用:ip字段並在提供文件之前通過request.remote_ip搜索下載程序。

如果我們正在談論文件下載,請記住使用send_file而不是重定向。