2013-03-06 2 views
-1

В products_controller.rbRails - find_by_ * маршрутные

# GET /search/'brand' 
    def brand 
    @product = Product.find_all_by_brand(params[:brand]) 

    respond_to do |format| 
     format.html # brand.html.erb 
    end 
    end 

В routes.rb

match '/search/:brand' => 'products#brand' 

Если я пытаюсь доступа localhost:3000/search/Apple я получаю следующую ошибку Couldn't find Product with id=Apple

Есть что-нибудь, что я Не хватает? Есть ли другие файлы, которые я должен обрабатывать?

Update

Теперь я получаю undefined method 'size' for nil:NilClass и я даже не уверен, что я изменился.

Запрос, выполненный рельсами, - select "products".* FROM "products" WHERE "products"."brand" = 'Apple' ORDER BY last_seen DESC, и они, кажется, возвращают правильные продукты.

Применение трассировки

приложение/просмотров/продукты/_product.html.erb: 1: в _app_views_products__product_html_erb___2255278_29707176' app/views/products/brand.html.erb:1:in _app_views_products_brand_html_erb___464952485_38589588' приложение/контроллеры/products_controller.rb: 52: в `марки»

+0

@ house9, извините, но я не понимаю, что вы говорите. – rlhh

+0

показать код вида 'app/views/products/_product.html.erb' и вызывающий код' app/views/products/brand.html.erb' - у вас есть объект nil, возможно, где вы ожидаете получить продукт объект? – house9

ответ

0

Обнаружили ошибку, страница erb принимала product вместо products. Опечатка.

1

Замечания вашего контроллера указывают, что вы можете попробовать/искать/бренд/Apple.

+0

'rake routes' возвращает мне' /search/:brand(.:format) продукты # brand' и не согласен ли это писать так? (Я подражаю тому, что дано по умолчанию 'show') – rlhh

+0

Вы копировали и вставляли весь код в свой контроллер из другого? Что-то фанки продолжается. Также вы сделали рейк db: migrate? – Stone

+0

Что вы подразумеваете под фанк? Все написано с нуля из примеров в книгах/веб-сайтах. – rlhh

Смежные вопросы