나는 장바구니 앱을 작업 중이며 주문 모델이 있습니다. 주문 모델에 carrier
, tracking_number
및 ship_date
을 포함하도록 배송 세부 정보를 추가했습니다. 순서를 업데이트 한 후 다른 리디렉션을 사용하기 위해 updateshipping
이라는 메서드를 만들었습니다.다른 양식으로 리디렉션하는 레일 양식
저장 후 레일에 조건부 리디렉션이 가능한지 확실하지 않거나 updateshipping
방법 (내가 시도한 것)에 액세스 할 수있는 맞춤 경로를 만들어야하는 경우 또는 정답이 맞다면 운송 세부 사항을 담을 새 모델을 만들어야합니다.
updateshipping
메서드를 통해 부분 부분을 리디렉션하려고했으나 제출 버튼이 작동하지 않습니다. 제출 버튼 위로 마우스를 가져 가면 URL이 표시되지 않습니다. 을 제출하면을 제출하면 부분 양식을 다시로드하는 것처럼 보입니다. 나는 form_for
에 @order
후 모든 것을 제거하면 내이 문제는 form_for
라인입니다 가정 있도록 올바르게 업데이트 주문/업데이트 방법에 간다 (또는 그 첫번째 장소에있는 순서 모델의 일부입니다.)
<%= form_for(@order, :url => shipment_path, :html => { :method => "put" }) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :carrier %>
<%= f.text_field :carrier %>
<%= f.label :tracking_number, "Tracking #" %>
<%= f.text_field :tracking_number %>
<div class="form-actions">
<%= f.submit "Save changes", class: "btn btn-warning" %>
</div>
<% end %>
주문 컨트롤러
def updateshipping
raise params.inspect (code to update the order will come later)
end
레이크 경로
shipment /shipmentdetails/:id(.:format) orders#shipment_details
shipment PUT /shipmentdetails/:id(.:format) orders#updateshipping
routes.rb
개match '/shipmentdetails/:id' => 'orders#shipment_details', :as => :shipment
match '/shipmentdetails/:id' => 'orders#updateshipping', :as => :shipment, via: :put
주문 모델 대신 :html => { :method => "put" }
의
class Order < ActiveRecord::Base
attr_accessible :name, :address, :carrier, :tracking_number, :ship_date
has_many :line_items, dependent: :destroy
has_one :user
has_one :shop
validates :name, :address, presence: true
end
동일한 결과를 보았습니다. 테스트를하는 동안 부분 재로드가 나타납니다. 따라서 "put"을 인식하지 못하고 route.rb에서 일치하는 항목을 찾지 못하시겠습니까? – Steve