Вам нужно будет свернуть эти значения во что-то, что поместится в URL, а затем декодировать их позже. Например:
# Put this in your helper method module PostsHelper
def post_ids
@posts.collect(&:id).join(',')
end
Ваша скорректированная ссылка будет:
link_to "newpage", {:controller => 'posts', :action => 'newmethod', :param => post_ids }
Когда вы выбираете следующую страницу, вам нужно будет расшифровать их, получив их снова:
@posts = Posts.find(params[:param].split(/,/))
Нет способа передать переменную экземпляра между запросами, потому что они явно очищены.
В качестве примечания попробуйте использовать сгенерированные методы маршрута вместо объявления в стиле хеш-функции. Вероятно, вы уже указали бы маршрут в rake routes
:
# Instead of { :controller => 'posts', :action => 'new', :param => post_ids }
new_post_path(:param => post_ids)
Эти сгенерированные методы на практике гораздо более читабельны и имеют преимущество в том, что их можно настроить позже, если вы захотите переосмыслить их значение, настроив таблицу маршрутизации.
Еще одно замечание: если список идентификаторов становится очень большим, вы не сможете закодировать их в URL-адрес, поскольку ограничение составляет около 1500 байт. Вместо этого вам, возможно, придется сначала сериализовать условия, использованные для генерации списка, а затем повторить их позже. Пока вы имеете дело с десятками предметов, а не с сотнями, все будет в порядке.