Rails - find_by_ * route

时间:2013-03-06 00:57:45

标签: ruby-on-rails-3 routes

在products_controller.rb

  # 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

有什么我想念的吗?我还应该处理其他文件吗?

更新

现在我得到了undefined method 'size' for nil:NilClass,我甚至不确定我改变了什么。

rails执行的查询是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'   app / controllers / products_controller.rb:52:in“brand”

2 个答案:

答案 0 :(得分:1)

控制器中的注释表明您可能想要/ search / brand / Apple。

答案 1 :(得分:0)

发现错误,错误页面正在接收product而不是products。输入错误。