Rails3应用程序无法识别已定义的操作/路由

时间:2014-06-16 06:52:56

标签: ruby-on-rails ruby-on-rails-3.2 rails-routing

定义了以下路线:

resources :products do
  collection do
    get :confirm
  end
  member do
    put :confirmed
  end
end

rake:routes返回:

confirmed_product PUT    /products/:id/confirmed(.:format)  products#confirmed

控制器有一个定义的动作:

def confirmed
  @product = Product(params[:id])
  @product.update_column(:paymentstate_id, "1")
  render :action => "confirmed"
end

该模型的助手实际上定义了:

'http://' + @site.host + confirmed_product_path(@product)

然而,在向此页面发布信息后(来自外部来源,因为这是结账付款的返还),数据将返回

[host]/products/2/confirmed

但是有错误:

Unknown action
The action '2' could not be found for ProductsController

我期待着'会员' item会允许2被识别为id并生成已确认的操作,因为rake routes会证明。

2 个答案:

答案 0 :(得分:3)

当网址正确时(如果帮助程序生成了网址,您可以认为它是正确的),但您无法以某种方式访问​​它,请务必检查HTTP动词。

另外,'http://' + @site.host + confirmed_product_path(@product)在导轨中可用作confirmed_product_url(@product)(请注意最后的_url)。

最后,render action: 'foo'可写为render 'foo'

答案 1 :(得分:1)

确保您的表单正在执行PUT,而不是默认情况下的POST,否则您的路由将不匹配。