form_for для перехода на неправильный URL - PullRequest
2 голосов
/ 07 марта 2012

Я на странице просмотра заказа и хочу обновить позицию для этого заказа:

У меня есть маршрут:

  resources :order_line_details do
    member do 
      put  :update_barcode
    end
  end

Тогда моя форма_for:

<%= form_for update_barcode_order_line_detail_path(@order_line_detail) do |f| %>
<%= f.text_field :hds_barcode  %>
<%= f.submit 'Submit' %>
<% end %>

Когда я отправляю, он просто переходит к заказу снова:

No route matches "/orders/20888"

Маршруты рейка: (для заказов и деталей заказа)

orders GET      /orders(.:format)                                              {:action=>"index", :controller=>"orders"}
                                  orders POST     /orders(.:format)                                              {:action=>"create", :controller=>"orders"}
                               new_order GET      /orders/new(.:format)                                          {:action=>"new", :controller=>"orders"}
                              edit_order GET      /orders/:id/edit(.:format)                                     {:action=>"edit", :controller=>"orders"}
                                   order GET      /orders/:id(.:format)                                          {:action=>"show", :controller=>"orders"}
                                   order PUT      /orders/:id(.:format)                                          {:action=>"update", :controller=>"orders"}
                                   order DELETE   /orders/:id(.:format)                                          {:action=>"destroy", :controller=>"orders"}


   update_barcode_order_line_detail PUT      /order_line_details/:id/update_barcode(.:format)               {:action=>"update_barcode", :controller=>"order_line_details"}
                      order_line_details GET      /order_line_details(.:format)                                  {:action=>"index", :controller=>"order_line_details"}
                      order_line_details POST     /order_line_details(.:format)                                  {:action=>"create", :controller=>"order_line_details"}
                   new_order_line_detail GET      /order_line_details/new(.:format)                              {:action=>"new", :controller=>"order_line_details"}
                  edit_order_line_detail GET      /order_line_details/:id/edit(.:format)                         {:action=>"edit", :controller=>"order_line_details"}
                       order_line_detail GET      /order_line_details/:id(.:format)                              {:action=>"show", :controller=>"order_line_details"}
                       order_line_detail PUT      /order_line_details/:id(.:format)                              {:action=>"update", :controller=>"order_line_details"}
                       order_line_detail DELETE   /order_line_details/:id(.:format)                              {:action=>"destroy", :controller=>"order_line_details"}

Что яделаешь неправильно?

1 Ответ

7 голосов
/ 07 марта 2012

Первым аргументом метода form_for должен быть объект, для которого предназначена форма.Затем вы можете вручную изменить URL-адрес по умолчанию с помощью параметра: url.Попробуйте сделать это так:

<%= form_for @order_line_detail, :url => update_barcode_order_line_detail_path(@order_line_detail) do |f| %>
  <%= f.text_field :hds_barcode  %>
  <%= f.submit 'Submit' %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...