Hello, I''ve encountered a strange problem w/ a find method in a big project I''m working on. One thing I must admit is I''m pretty new to ruby and coming from a PHP background. Anyway here''s the find method: [code] def find if params.has_key? :space #*new* if request.post? #*old* unless params[:space][:title].empty? @space_pages, @spaces = paginate :space, :per_page => 30, :conditions => "title like ''%#{params[:space][:title].gsub(/''+/, "\\\\''") }%''", :order => ''title asc'' if @spaces.size == 0 flash[:notice] = ''Space not found'' else flash[:notice] = ''Space render :action => ''index'' end end end end [/code] Here''s the html code: <input id="space_title" name="space[title]" size="30" type="text" /> Now the strange this w/ this function is I can type say: "test" and no record will be found and the text box will be empty. If I hit the submit button again the params[:space][:title] variable will still hold the value of ''test''. Why is the params[:space][:title] holding the value of the text input box when there''s nothing in it? Also on a final note - I''m also trying to write a test for this method. This method reports no errors or failures but seems to not be the most thorough test: [code] def test_find post :find, :context => ''admin'' assert_response :success end [/code] Thanks for any help! -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Clem Rock wrote:> > if @spaces.size == 0 > flash[:notice] = ''Space not found'' > else > flash[:notice] = ''Space > render :action => ''index'' > enduse redirect_to instead of render. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Yeah - I just caught that too. I changed the render to redirect_to and there was no change in this behavior. One problem is that I just don''t know how ruby handles post and get requests. Thanks for your time. ''m not used to the language and people''s coding sty Elad wrote:> Clem Rock wrote: > >> >> if @spaces.size == 0 >> flash[:notice] = ''Space not found'' >> else >> flash[:notice] = ''Space >> render :action => ''index'' >> end > > use redirect_to instead of render.-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
More on that test part: so I have this record in my spaces.yml: first_space: id: 1 title: My first space subdomain: first-space domain: functionalalcoholism.org home_page_id: 57 user_id: 1 owner_id: 1 created_at: 2005-05-21 00:00:00 updated_at: 2005-05-21 00:00:00 wikiwords_enabled: 1 country_code: US timezone_identifier: US/Eastern And here''s my test: def test_find post :find, :space => {:title => ''My first space''}, :context => ''admin'' assert_response :success assert_not_nil assigns(:spaces) assert_not_nil assigns(:space_pages) assert_equal 1, assigns(:spaces).size #1 because there''s only one record assert_nil flash[:error] end But I now get a "Expected response to be a <:success>, but was <302>" Error Clem Rock wrote:> Yeah - I just caught that too. I changed the render to redirect_to and > there was no change in this behavior. > > One problem is that I just don''t know how ruby handles post and get > requests. > > Thanks for your time. > > > > ''m not used to the language and people''s coding sty > > Elad wrote: >> Clem Rock wrote: >> >>> >>> if @spaces.size == 0 >>> flash[:notice] = ''Space not found'' >>> else >>> flash[:notice] = ''Space >>> render :action => ''index'' >>> end >> >> use redirect_to instead of render.-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Ok - progress w/ the test - had to change this little section ( assert_response :redirect to assert_response :redirect) and it works like a charm: [code] def test_find post :find, :space => {:title => ''My first space''}, :context => ''admin'' assert_response :redirect assert_not_nil assigns(:spaces) assert_not_nil assigns(:space_pages) assert_equal 1, assigns(:spaces).size assert_nil flash[:error] end [/code] Now if I could only figure out that double post part I would be the happiest of campers! Clem Rock wrote:> More on that test part: > > so I have this record in my spaces.yml: > > first_space: > id: 1 > title: My first space > subdomain: first-space > domain: functionalalcoholism.org > home_page_id: 57 > user_id: 1 > owner_id: 1 > created_at: 2005-05-21 00:00:00 > updated_at: 2005-05-21 00:00:00 > wikiwords_enabled: 1 > country_code: US > timezone_identifier: US/Eastern > > And here''s my test: > > def test_find > post :find, :space => {:title => ''My first space''}, :context => > ''admin'' > assert_response :success > assert_not_nil assigns(:spaces) > assert_not_nil assigns(:space_pages) > assert_equal 1, assigns(:spaces).size #1 because there''s only one > record > assert_nil flash[:error] > end > > But I now get a "Expected response to be a <:success>, but was <302>" > Error > > Clem Rock wrote: >> Yeah - I just caught that too. I changed the render to redirect_to and >> there was no change in this behavior. >> >> One problem is that I just don''t know how ruby handles post and get >> requests. >> >> Thanks for your time. >> >> >> >> ''m not used to the language and people''s coding sty >> >> Elad wrote: >>> Clem Rock wrote: >>> >>>> >>>> if @spaces.size == 0 >>>> flash[:notice] = ''Space not found'' >>>> else >>>> flash[:notice] = ''Space >>>> render :action => ''index'' >>>> end >>> >>> use redirect_to instead of render.-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---