jcoglan-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org
2006-Dec-13 15:53 UTC
Comment forms and URLs
Hi all, Just started with Rails a couple weeks ago after a few years doing PHP. I''ve got a blog going with URLS like /blog/2006/12/13/entry_title and each entry has a comment form and the end. This form calls an action ''add_comment'' in the ''blog'' controller, with the URL /blog/add_comment I was wondering whether it''s possible for users to arrive back at the first URL for the entry after trying to post a comment? Using redirect_to with the entry''s route means I can''t use error_messages_for on the comment in my entry''s view. So instead, I''m just doing @comment.save etc in blog#add_comment and then using render :action show_entry to show the entry the comment applies to. This retains the form values and shows any errors produced. Can I have someone submit a comment and be directed to /blog/2006/12/13/entry_title without losing the comment and its errors along the way? Thanks, James --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
James wrote:> > Hi all, >[snip]> /blog/add_comment > > I was wondering whether it''s possible for users to arrive back at the > first URL for the entry after trying to post a comment? Using > redirect_to with the entry''s route means I can''t use error_messages_for > on the comment in my entry''s view. So instead, I''m just doing > @comment.save etc in blog#add_comment and then using > > render :action show_entry > > to show the entry the comment applies to. This retains the form values > and shows any errors produced. Can I have someone submit a comment and > be directed to > > /blog/2006/12/13/entry_title > > without losing the comment and its errors along the way? >In the #add_comment action, store the comment in the user session before any validation. Use flash to communicate error messages and redirect_to should work. You can have a look at my blog comment section to get a better idea. Long www.edgesoft.ca/blog/read/2 - rails articles --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
jcoglan-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org
2006-Dec-13 17:06 UTC
Re: Comment forms and URLs
Thanks for the suggestion! Just to clarify, would something like this do the trick... # in blog#add_comment @comment = Comment.new(params[:comment]) @comment.valid? flash[:comment] = @comment redirect_to entry_url (...with parameters for URL...) # in blog#show_entry @comment = flash[:comment] Will the show_entry action/view now get the contents of the comment and @comment.errors? Does flash work or should I use session? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> > Thanks for the suggestion! Just to clarify, would something like this > do the trick... > > # in blog#add_comment > @comment = Comment.new(params[:comment]) >You might want to store the comment in the user session. e.g session[:comment] = @comment> @comment.valid? >You would test for validity here and set flash to show any error message. e.g. flash[:alert] = ''Missing a required field''> flash[:comment] = @comment > redirect_to entry_url (...with parameters for URL...) > > # in blog#show_entry > @comment = flash[:comment] >You may use <% new_comment = session[:comment] %> and access each attribute with <%= new_comment.from %> <%= new_comment.url %> <%= new_comment.message%> ...etc. to display each attribute on the form. A final note, you should initialize session[:comment] = Comment.new the first time the form is accessed so you don''t get a nil error. HTH, Long www.edgesoft.ca/blog/read/2 - rails articles --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---