Не могу понять как мне передать методу find, id конкретного продукта?

ruby rails RoR

Необходимо чтобы из списка сформированного из одной таблицы достать id продукта и для него создать другой список из одного продукта, что - то на примере этого:
Контроллер:
def index_hostings
category = params[:category]
@products = Product.find_products_for_hostings
@cart = find_cart
end

def product_view
id = params[:id]
@products = Product.find_products_for_view
@cart = find_cart
end


Модель:
def self.find_products_for_hostings
find(:all, :conditions => "category = 'hosting'")
end

def self.find_products_for_view
find(:all, :conditions => ["id = ?", id])
end


PS :all, потому что иначе выдает ошибку метода 'each

В app trace выдает:

Parameters: {"action"=>"product_view", "id"=>"1", "controller"=>"store"}
Product Load (0.000310) SELECT * FROM products WHERE (id = 19229050)

откуда он генерирует id не понятно, и почему он не использует заданный тоже...

Соответственно из одного представления через link_to нужно передать id для показа одного продукта (как "посмотреть далее..."), уже 5-ый час сижу, совсем не соображаю, простите за костноязычие... Заранее

Примечание:
*******************************************
Решил проблему по другому, оказывается, все было проще, все дело было в методе each, он же только с массивами работает, а у меня продукт как строка представлялся. Поэтому я схитрил и нашел продукт методом Model.find_all_by_id(params[:id]) (id передан в link_to), который автоматически возвращает массив и позволяет с ним работать методу each. Так что все заработало.

Антон Витальевич: Хмм, мне ваш вариант нравится больше, он изящьнее, как доделаю фильтр (вот с ним я уже не знаю что делать, просто не понимаю механизма checkbox'а и как он передает параметры и работает.... + по расчетам, для фильтра мне 5! схем if else писать =) гыгы ), попробую по вашему переписать ...
Ответы:
у вас params[:id] и соответсвенно id не используется при выборке


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.