|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
Stop making mediocre tutorials.The best tutorials are video! Camtasia Studio makes it easy to create engaging, buzz-building screen videos at any size, in any popular format. Download the free trial!
|
|
#1
|
|||
|
|||
|
Post variable repost itself
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
redirect_to :action => 'index'
end
end
end
end
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
Thanks for any help! Last edited by CLEM_C_ROCK : December 27th, 2006 at 11:51 AM. |
|
#2
|
|||
|
|||
|
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: Code:
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 Quote:
|
|
#3
|
|||
|
|||
|
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
Now if I could only figure out that double post part I would be the happiest of campers! |
![]() |
| Viewing: Dev Shed Forums > Programming Languages > Ruby Programming > Post variable repost itself |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|
|