aboutsummaryrefslogtreecommitdiffstats
path: root/railties/doc/guides/source/actioncontroller_basics/cookies.txt
diff options
context:
space:
mode:
Diffstat (limited to 'railties/doc/guides/source/actioncontroller_basics/cookies.txt')
-rw-r--r--railties/doc/guides/source/actioncontroller_basics/cookies.txt34
1 files changed, 34 insertions, 0 deletions
diff --git a/railties/doc/guides/source/actioncontroller_basics/cookies.txt b/railties/doc/guides/source/actioncontroller_basics/cookies.txt
new file mode 100644
index 0000000000..d451f3f7a6
--- /dev/null
+++ b/railties/doc/guides/source/actioncontroller_basics/cookies.txt
@@ -0,0 +1,34 @@
+== Cookies ==
+
+Your application can store small amounts of data on the client - called cookies - that will be persisted across requests and even sessions. Rails provides easy access to cookies via the `cookies` method, which - much like the `session` - works like a hash:
+
+[source, ruby]
+-----------------------------------------
+class CommentsController < ApplicationController
+
+ def new
+ #Auto-fill the commenter's name if it has been stored in a cookie
+ @comment = Comment.new(:name => cookies[:commenter_name])
+ end
+
+ def create
+ @comment = Comment.new(params[:comment])
+ if @comment.save
+ flash[:notice] = "Thanks for your comment!"
+ if params[:remember_name]
+ # Remember the commenter's name
+ cookies[:commenter_name] = @comment.name
+ else
+ # Don't remember, and delete the name if it has been remembered before
+ cookies.delete(:commenter_name)
+ end
+ redirect_to @comment.article
+ else
+ render :action => "new"
+ end
+ end
+
+end
+-----------------------------------------
+
+Note that while for session values, you set the key to `nil`, to delete a cookie value, you use `cookies.delete(:key)`.