定义了以下路线:
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
会证明。
答案 0 :(得分:3)
当网址正确时(如果帮助程序生成了网址,您可以认为它是正确的),但您无法以某种方式访问它,请务必检查HTTP动词。
另外,'http://' + @site.host + confirmed_product_path(@product)
在导轨中可用作confirmed_product_url(@product)
(请注意最后的_url
)。
最后,render action: 'foo'
可写为render 'foo'
答案 1 :(得分:1)
确保您的表单正在执行PUT,而不是默认情况下的POST,否则您的路由将不匹配。