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
-~----------~----~----~----~------~----~------~--~---