James,
I even tried the examples you gave me:
(defroutes main-routes
(GET "/" [] (welcome))
(GET "/form" [] (render-form))
(GET "/login/" [] (login-view))
; (POST "/login/" {request :request params :params} (login-
controller request params))
(POST "/login/" {params :params session :session} (login-
controller params session))
; (ANY "/logout/" [] (logout-controller session))
(ANY "/page/" {request :request session :session} (page request
session "hello" "world"))
(GET "/a" [] (ooops))
(GET "/set" [x :as {session :session}]
{:session (assoc session :x "Shree")
:body (str "You set x = " x)})
(GET "/get" {session :session}
(str "x = " (:x session)))
(POST "/form" {params :params} (handle-form params))
(route/not-found (page_not_found)))
But for WHATEVER reason, the sessions are NOT getting stored? When I
goto the set page, I get:
http://localhost:3000/set
You set x =
-and-
http://localhost:3000/get
x =
respectively. I must REALLY be messing SOMETHING up at my end??? Why
else would this NOT be working???
Thanks,
shree
On May 11, 8:01 pm, James Reeves <[email protected]> wrote:
> On 12 May 2011 00:04, Shree Mulay <[email protected]> wrote:
>
> > From this code, I can't figure out where you "instantiate" the session
> > var, store to it, and read back from it? I know there's not
> > instantiation in clojure(???). I hope your able to get what I'm having
> > trouble figuring out.
>
> The session is read from a :session key on the request map, and
> written using a :session key on the response map.
>
> For example, this route returns the value of the session key :x
>
> (GET "/get" {session :session}
> (str "x = " (:x session)))
>
> It's equivalent to the Sinatra route:
>
> get "/get" do
> "x = #{session[:x]}"
> end
>
> The main difference is that the session has to be bound explicitly. We
> don't just get a magic session map hanging around in the background.
>
> Writing a session is a little trickier:
>
> (GET "/set" [x :as {session :session}]
> {:session (assoc session :x x)
> :body (str "You set x = " x)})
>
> The equivalent Sinatra route is:
>
> get "/set" do |x|
> session[:x] = x
> "You set x = #{x}"
> end
>
> Ring sessions are a little unwieldy because you write by changing the
> response, rather than calling a side-effectful function. Sandbar takes
> a slightly different approach that looks more like the Sinatra code:
>
> (GET "/get" []
> (str "x = " (session-get :x)))
>
> (GET "/set" [x]
> (session-put! :x x)
> (str "You set x = " x))
>
> Sandbar is a little cleaner for simple things, but Ring sessions have
> the advantage of working well with middleware. Idiomatic Ring tends to
> use a lot of middleware, far more than one might use in Rack (for
> instance).
>
> - James
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en