Routing Error with Post/Put requests (Passenger Headers)

前端 未结 3 696
無奈伤痛
無奈伤痛 2021-01-06 00:27

I\'ve run into a weird problem and after a bunch of research can\'t get any closer. I\'ve got several forms that upload files via Carrierwave. When I upload the information,

3条回答
  •  庸人自扰
    2021-01-06 01:05

    One issue here is you're not specifying whether the route is defined on the collection or a member. Which one of these is the correct route?

    programs/:id/add_file
    
    programs/add_file
    

    You should construct your routes like this:

    resources :programs do
      post 'add_file', :on => :member
    end
    

    or

    resources :programs do
      member do
        post 'add_file'
      end
    end
    

    The above will take post requests at programs/:id/add_file and send them to ProgramsController.add_file with the params[:id] as the program id.

    If you want this on the collection, you could do:

    resources :programs do
      post 'add_file', :on => :collection
    end
    

    or

    resources :programs do
      collection do
        post 'add_file'
      end
    end
    

    This would take post requests at programs/add_file and send them to ProgramsController.add_file, but no params[:id] would be set.

    In general you should always specify whether routes are on the collection or member, and you should specify which verb a route should accept (ie use 'get' or 'post' etc. instead of 'match').

    Try the above and see if that solves your problem, if not please let me know and I'll take another look.

提交回复
热议问题