SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    SitePoint Zealot
    Join Date
    Jul 2004
    Location
    NC
    Posts
    194
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    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; Dec 27, 2006 at 11:55. Reason: code update

  2. #2
    SitePoint Zealot
    Join Date
    Jul 2004
    Location
    NC
    Posts
    194
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    More on that test.

    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 assignsspaces)
    assert_not_nil assignsspace_pages)
    assert_equal 1, assignsspaces).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

  3. #3
    SitePoint Zealot
    Join Date
    Jul 2004
    Location
    NC
    Posts
    194
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    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!


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •