我设置了路由,我想将参数传递给delete方法。
我已经尝试过这项不起作用的事情:
namespace :admin do
resources :item do
get 'create_asset'
delete 'destroy_asset/:asset_id'
end
resources :asset
end
我已经做到了,但它看起来不是正确的解决方案......
delete 'admin/items/:frame_id/destroy-asset/:asset_id' => 'admin/frames#destroy_asset'2, as: :destroy_asset
我怎样才能实现它?我无法理解我错在哪里。
答案 0 :(得分:0)
好的,我想出了一个不同的方法。
保持这个:
namespace :admin do
resources :item do
get 'create_asset'
delete 'destroy_asset'
end
resources :asset
end
可以将asset_id
传递给destroy_asset
操作作为正常的get参数:
<%= link_to 'Destroy', admin_item_destroy_asset_path( @admin_item.id, asset_id: admin_asset.id ), method: :delete, data: { confirm: 'Are you sure?' } %>
所以而不是
admin/items/:item_id/destroy-asset/:asset_id
我们有
admin/items/:item_id/destroy-asset?asset_id:XXX
答案 1 :(得分:0)
首先,initAutocomplete
名称必须为复数,因此resources
成为:item
,:items
成为:asset
现在回答你的问题,你应该在:assets
内嵌套assets
以保持你的路线RESTful。
试试这个:
items
将生成:
namespace :admin do
resources :items do
resources :assets
end
end
更新您的DELETE /admin/items/:item_id/assets/:id(.:format) assets#destroy
以包含此before_action:
assets_controller.rb
现在您只需链接到这样的删除操作:
before_action :load_item
...
private
def load_item
@item = Item.find(params[:item_id])
# If your models are namespaced too use this instead
# @item = Admin::Item.find(params[:item_id])
end