help with session

Hi all,

I have a app with the /tests/new location which renders the add new form. This all works perfectly so when i fill the form in it goes straight into the db but i want the form to store the data in session[:whateverfield] i.e.

session[:id], session[:title], session[:name], etc

Then pass this the session values to display on a preview info page. Which then the user can edit the session. Once the form is ok then it can be submitting to the db.

So i guess the form i have doesn't need to be changed due to the fields i need are there already but obviously when i press submit button it add the info to the db and not the session, is there something i have to change i.e. the form_for link etc.

Any help will be great

Thanks

Possibly you want separate controller actions, one that just saves it in the session and one that saves it in the db. Either that or extend the existing actions to do one or the other as appropriate.

Colin

Hi Colin,

Sorry i understand bits but I'm still new at rails. I see the form action is /tests and the form POSTs i.e.

     tests GET /tests(.:format) tests#index                POST /tests(.:format) tests#create <---- this one                POST /tests(.:format) tests#save <-------- new one new_test GET /tests/new(.:format) tests#new edit_test GET /tests/:id/edit(.:format) test#edit         test GET /tests/:id(.:format) tests#show                PUT /tests/:id(.:format) tests#update                DELETE /tests/:id(.:format) tests#destroy     root / tests#index

So i can create a action save which saves to the session, then the preview just retrieves the session values and links to edit, continue then the last one gives a page to submit the session values to the db with tests#create.

Does this sound ok? Also the above routes are not in the routes.rb so where are these stored?

Thanks

Hi Colin,

Sorry i understand bits but I'm still new at rails. I see the form action is /tests and the form POSTs i.e.

tests   GET        /tests\(\.:format\)              tests\#index
          POST      /tests\(\.:format\)              tests\#create

<---- this one POST /tests(.:format) tests#save <-------- new one new_test GET /tests/new(.:format) tests#new edit_test GET /tests/:id/edit(.:format) test#edit test GET /tests/:id(.:format) tests#show PUT /tests/:id(.:format) tests#update DELETE /tests/:id(.:format) tests#destroy root / tests#index

So i can create a action save which saves to the session, then the preview just retrieves the session values and links to edit, continue then the last one gives a page to submit the session values to the db with tests#create.

Does this sound ok?

Sounds good to me

Also the above routes are not in the routes.rb so where are these stored?

I think they probably /are/ in routes.rb, you just don't realise it. Have a look at the Rails Guide on Routing.

Colin

Colin Law wrote in post #1057707:

<-------- new one preview just retrieves the session values and links to edit, continue then the last one gives a page to submit the session values to the db with tests#create.

Does this sound ok?

Sounds good to me

cool :slight_smile:

Also the above routes are not in the routes.rb so where are these stored?

I think they probably /are/ in routes.rb, you just don't realise it. Have a look at the Rails Guide on Routing.

Colin

All i have in my routes.rb are:

Tests::Application.routes.draw do

  resources :tests

  root :to => 'tests#index'

end

and that is it. I have had a brief look at it.

Thanks for you help

Colin Law wrote in post #1057707:

<-------- new one preview just retrieves the session values and links to edit, continue then the last one gives a page to submit the session values to the db with tests#create.

Does this sound ok?

Sounds good to me

cool :slight_smile:

Also the above routes are not in the routes.rb so where are these stored?

I think they probably /are/ in routes.rb, you just don't realise it. Have a look at the Rails Guide on Routing.

Colin

All i have in my routes.rb are:

Tests::Application.routes.draw do

  resources :tests

Precisely. Look at the Rails Guide to see what that means.

Colin

Tests::Application.routes.draw do

  resources :tests

Precisely. Look at the Rails Guide to see what that means.

Right ok i have got the new action defined with:

resources :tests do     post 'save', :on => :collection end

which defines as /tests/save => tests#save

then i rake routes and its show up in the routes now :), but the only problem i couldn't see information unless i'm bind about how to set the form to now submit with the new /tests/save action and not tests#create.

Many thanks

I presume you are using form_for to generate the form. It takes a :url option which you can use to specify a named route. Have a look at the docs for form_for. When you are trying to get it to work look at the html of the page to check it is right. (View > Page Source or similar in your browser).

Colin

I presume you are using form_for to generate the form. It takes a :url option which you can use to specify a named route. Have a look at the docs for form_for. When you are trying to get it to work look at the html of the page to check it is right. (View > Page Source or similar in your browser).

Yes i am using form_for. Arh Ok colin i will check that out. Thanks