没有路线匹配[PUT]。如何正确路由?

时间:2016-05-03 14:19:57

标签: ruby-on-rails ruby routes

我有_form.html.haml的代码:

= form_tag edit_work_flows_path, :method=> 'put' do |f|
  -@all_configurations.each do |config|
    -if config.configuration_key == 'DUPLICATE_CLAIM_WI_MANAGER'
      =hidden_field_tag "config_ids[]", config.id
      .fieldset.field-group.field-group-inline.pull-left
        .field.field-text
          %label= t('workflow.duplicate_claim_manager')

它给出错误"没有路线匹配[PUT]"

但是,当我将form_tag更改为app_configurations_path时,它可以正常工作。但它没有进入我想要的页面。我希望它转到edit_work_flows_path页面。这是我的路线:

    scope '/settings' do
      resource :app_configurations, only: [:edit, :update] do
        collection { get 'cover_letter_template' }
      end
      resource :work_flows, only: [:edit, :update]
    end

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

  

没有路线匹配[PUT]

问题在于您的form_tag。当您运行rake routes时,您会看到如下所示

   Prefix Verb  URI    Pattern                   Controller#Action
edit_work_flows GET   /work_flows/edit(.:format) work_flows#edit
     work_flows PATCH /work_flows(.:format)      work_flows#update
                PUT   /work_flows(.:format)      work_flows#update

这意味着edit_work_flows_path只能接受GET,这就是您收到错误的原因。您应该将edit_work_flows_path更改为work_flows_path。以下代码应该有效。

= form_tag work_flows_path, :method=> 'put' do |f|