On Saturday, May 3, 2014, Sebastjan Hribar sebastjan.hri...@gmail.com
wrote:
Hi guys,
just a little feedback from a beginner. I've finished my first camping
app. Thank you for your help and guidance.
The finished app is about quality management and enables users to fill out
forms. Based on those forms different quality parameters are recorded per
user and per project. These can be called up in summary reports for desired
time frame and user. Along with all the forms for a period the average
quality evaluation is also displayed. Reports can only be generated by
quality managers.
I've managed to reuse only one html form for creating, viewing and
editing. In addition, I've setup the form in such a way, that submitting is
possible only when the form was called via »new« or »edit« route and the
user has appropriate authorizations.
I have one question regarding the session. I don't actually know how to
leverage or use it. According to the reference the session adds states to
the app. Can someone explain a bit more?
Sorry for the late reply.
Here's an example of state:
module App::Controllers
class Index
def get
if @state.user_id
Welcome user number #{@state.user_id}
else
render :login
end
end
class Login
def post
# Just log everyone in. No passwords here!
@state.user_id = @input.user_id
redirect Index
end
end
end
module App::Views
def login
form action: R(Login), method: :post do
label do
p User ID:
input name: :user_id
end
button Log in
end
end
end
Here's an example of the flow when the user visits the site:
1. User visits GET /. Index#get is called.
2. The state is empty, so the #login view is rendered
3. The user enters his user ID (let's say 5).
4. When the user presses Log in, the browser will do a POST /login with
user_id=5 as parameters
5. Login#post is invoked. This sets the state variable and then redirects
to /.
6. The user's browser then shows GET /. Now he gets a welcome message, not
the login form.
Notice how the same request is done in both step 1 and 6 (GET /), but the
second time the user gets a completely different page. That's because the
state is different.
You might know about cookies: sessions are like cookies that only the
server know how to set. It's impossible for the client to set its own
session; every session has to be set through the @state-variable in an
action.
I hope this clarifies state/sessions a bit. Don't hesitate to ask more if
you're confused.
// Magnus
--
// Magnus Holm
___
Camping-list mailing list
Camping-list@rubyforge.org
http://rubyforge.org/mailman/listinfo/camping-list