Thank you for the detailed description! I have one question about the @state. Where does the method user_id come from? I've been going through the unabridged source and Camping::Session reference, but I guess I'm not proficient enough:)
And what else can be also saved in the @state? regards seba 2014-06-07 18:42 GMT+02:00 Magnus Holm <judo...@gmail.com>: > 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 >
_______________________________________________ Camping-list mailing list Camping-list@rubyforge.org http://rubyforge.org/mailman/listinfo/camping-list