如何设置我的@ product = Product.find(params [:id])以获得product_url?

时间:2010-06-16 20:17:58

标签: ruby-on-rails ruby

尝试重新创建{script / generate scaffold},我已经通过了许多Rails基础知识。我怀疑我需要在某处配置默认产品网址。但是我在哪里这样做?

设定:

  1. 拥有: def edit {@ product = Product.find(params [:id])}
  2. 拥有 edit.html.erb ,其中的编辑表单发布到 action => :创建
  3. def创建{...} ,代码为redirect_to(@ product,...)
  4. 获取错误:未定义的方法`product_url'用于#<的ProductsController:0x56102b0>
  5. 我的def更新:

    def update
        @product = Product.find(params[:id])
    
        respond_to do |format|
          if @product.update_attributes(params[:product])
            format.html { redirect_to(@product, :notice => 'Product was successfully updated.') }
            format.xml  { head :ok }
          else
            format.html { render :action => "edit" }
            format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
          end
        end
      end
    

1 个答案:

答案 0 :(得分:2)

啊,在/config/routes.rb中添加以下行:

map.resources :products

并确保将其置于默认值之上:

map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

这定义了一个系统,用于提供:产品的网址。