Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails嵌套资源,带有respond\u和destroy操作_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby Rails嵌套资源,带有respond\u和destroy操作

Ruby Rails嵌套资源,带有respond\u和destroy操作,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,对于嵌套的资源销毁操作,什么是适当的respond\u with行 我的路线: resources :vendors do resources :products, :except => [:index] end 产品#销毁(注意@供应商和@产品在过滤器前有一个,此处省略) 根据我的功能测试,返回的是/vendors/X/products/X,而不是/vendors/X 我是否应该将其更改为仅响应@vendor?对不起,该答案完全错误(误解了您的问题): 您的销毁代码可以如下所示:

对于嵌套的资源销毁操作,什么是适当的
respond\u with

我的路线:

resources :vendors do
  resources :products, :except => [:index]
end
产品#销毁(注意
@供应商
@产品
在过滤器前有一个
,此处省略)

根据我的功能测试,返回的是
/vendors/X/products/X
,而不是
/vendors/X


我是否应该将其更改为仅响应@vendor

对不起,该答案完全错误(误解了您的问题):

您的销毁代码可以如下所示:

def destroy
  @product = Product.find(params[:id])
  @product.destroy 
  redirect_to <route method for vendor's products index>, :notice => 'Any message'
end
def销毁
@product=product.find(参数[:id])
@产品销毁

重定向到我相信Rails足够聪明,能够理解如果@product被破坏了该怎么办

respond_with [@vendor, @product]
如果没有,那么试试这个

respond_with @product, :location => vendor_path(@vendor)

嗯,我没有产品的索引,所以我想
vendor\u url(@vendor)
就足够了?是的,可以。或者你可以只放置@vendor,不需要使用helper方法,你需要在vendor上找到_或在product.vendories上使用_,你是对的<代码>用@vendor、@product、:notice=>“product Deleted”
响应就足够了(注意数组的缺乏)@Eduardo Rdm,
@vendor和@product带有一个before_过滤器,该过滤器被省略
第一个示例将我带到
/vendors/XXX/products
,它不存在,因为我没有产品的索引路径。我想我需要用第二个。。。有没有人有链接到API文档的
respond\u with
?当然可以使用第二种变体。能够使用@vendor、@product、:location=>vendor\u url(@vendor)只是感觉更加一致。我需要找到列出所有可用选项的好文档,这些选项可用于
respond\u with
。谢谢你们两位的帮助!
respond_with @product, :location => vendor_path(@vendor)