How to calculate per_page value based on browser window size for will_paginate

def self.per_page
    20
  end

Any suggestion on how I can calculate this value base on the size of
the browser window?

Thanks

Why not allow the user to choose this value (i.e. via a drop down
menu )?

If you go that route, don't forget to store this preference somewhere
so your users don't have to set it every time. (I'm looking at you
Blockbuster.com)

Eric

Ok, I tried as you suggested with:

<%= select_tag(:per_page, options_for_select(%w{10 20 30 40 50},
selected = session[:per_page]), :onchange => "session[:per_page] =
this.value") %> Lines per page

I can't seem to get the :onchange to set a new value for
session[:per_page]. I checked :onchange with an alert(this.value) and
it did what I expected.

Can you proved a sample of what I should be doing in :onchange

Thanks.

Can you proved a sample of what I should be doing in :onchange

I've used an "Apply" button inside of form_tag, which sends params
back to the controller and I set the session there.

If you wanted to use the :onchange event instead of requiring the user
to click on a button, you would probably have to send an
XMLHttpRequest to the server and then refresh the page with the new
paginated data.

Eric

Thanks for your ideas.

I decided to make per_page an attribute of the user and set it at
login. That way it gives all my list pages a common look.

I had already put this inside a form_tag I am using for a search box,
so I didn't want to add another form_tag. The search box and the
pagination boxes took up enough room on the page. Can you direct two
different form_tags to appear on the same line?

I still don't get what I would put in the :onchange option. Can you
give me an example?