如何为嵌套资源和自定义控制器操作设置rails 3路由

时间:2012-11-19 18:27:38

标签: ajax ruby-on-rails-3 paperclip

我的建议是嵌套在类别和奖项之下。

所以类别/:id / awards /:id / recommendations /:id

我有一个Assets模型,用于处理建议书的回形针附件。建议书has_many资产,资产属于:推荐

在我的推荐新视图/编辑视图中,我正在呈现一个部分(正常情况下)的表单,它为用户提供了上传多个资源的选项。

如果有资产已经相关,那么它会列出它们。我正在建议在推荐控制器上设置自定义删除操作。

我当前的link_to:

<%= link_to "Delete Attachment", 
                {:controller => :recommendations, :action => :destroy_asset, :id => asset.id }, 
                {:remote => "true", :confirm => "Are you sure you want to delete this image?"} 
         %>

我的控制器操作:

def destroy_asset
    #@recommendation = Recommendation.find(params[:id])
    @asset = Asset.find(params[:id])
    @asset.destroy
    respond_to do |format|
      format.js
    end
  end 

路线:     资源:建议     资源:类别         资源:奖励             资源:建议         结束       结束

我还在学习remote =&gt;是的,以及如何路由这个吸盘。不确定我是否需要嵌套路由。我倾向于不这样认为。因为我的循环中有一个Asset.id,所以我应该能够执行destroy而不需要建议。

所以问题是:我需要一个路径来访问我的advice_controller中的自定义操作吗? 感谢

1 个答案:

答案 0 :(得分:0)

试试这个:

resources :categories do
    resources :awards do
        resources :recommendations 
           member do
              get :destroy_asset
           end
        end
    end 
end

或者如果您只想在推荐控制器下执行destroy_asset操作,请执行以下操作:

resources :recommendations 
    member do
        get :destroy_asset
    end
end

或者如果您想要自定义匹配,请执行以下操作:

match "asset/:id/destroy_asset", :to => "recommendations#destroy_asset", 
:as=> "destroy_asset"