2013-03-17 2 views
0

왜 이런 일이 발생하는지 알 수는 없지만 아마도 누군가가 ... 여기에 있습니다. 나는 link_tonew 조치를 추가하고 페이지가 잘로드되는 order.idnew_order_ordered_vehicle_path(order.id)과 같이 통과 한레일 3 개의 중첩 된 리소스 '새'경로가 전환 중임

resources :order do 
    resources :ordered_vehicles 
end 

:

나는 중첩 된 자원을 만들었습니다. 문제는 버튼을 눌러 선택 사항을 제출 한 후입니다. 그는 http://localhost:3000/order/3/ordered_vehicles/new에서 http://localhost:3000/order/R076027535/ordered_vehicles으로 경로를 전환하고 오류 Couldn't find Order with id=R076027535 ...을 표시합니다.

오류

before_filter이 방법

private 
    def find_order 
    @order = Order.find(params[:order_id]) 
    end 

상기 제어부에서 발생되고있다.

new.html.haml 파일은 그가 찾을 수없는 id@order.number하지만 난 왜 스위치를하지 않는이

= form_for [@order, @ordered_vehicle], html: { multipart: true } do |f| 
    = @order.number 
    %br= @order.id 
    = f.fields_for :vehicles do |car| 
     .... #some fields here 
     = car.submit "Save your choice" 

것 같습니다.

편집 :

def new 
    @ordered_vehicle = @order.ordered_vehicles.build(params.slice(:order_id, :vehicle_id)) 
end 

def create 
    binding.pry 
    @ordered_vehicle = @order.ordered_vehicles.build(params.slice(:order_id, :vehicle_id)) 
    if @ordered_vehicle.save 
    flash[:notice] = "Save successful." 
    redirect_to account_path 
    end 
end 

POST 요청을 (나는 그 모든 것들에 여전히 새로운 사람, 희망) :

"action_dispatch.request.formats"=>[text/html]}, 
@request_method="POST", @filtered_parameters={"utf8"=>"✓", "authenticity_token"=> 
"Ar4vy8pqCSpA2ch0qG0qiJXAJUbNALYxm/FbuKbdzCc=", "ordered_vehicle"=> 
{"vehicles"=> {"maker_id"=>"", "model_id"=>"", "year"=>"", "body"=>"", "capacity"=>"", "id"=>"1"}}, 
"commit"=>"Save your choice", "action"=>"create", 
"controller"=>"spree/ordered_vehicles", "order_id"=>"R076027535"}, @method="POST", 
@fullpath="/order/R076027535/ordered_vehicles"> 
+0

경로를 알려주시겠습니까? 그리고 실제로'form_for [@order, @ordered_vehicle]'에서 렌더링 된 URL을 보여줄 수 있습니까? 또한, "R076027535"는 ordered_vehicle의 ID입니까? – johnkoht

+0

경로를 게시했습니다 (첫 번째 코드). "R07 ..."은'Orders' 테이블의'@ order.number' 열뿐 아니라 왜 그가 전환하는지 알지 못합니다. URL? 제출 버튼을 누른 후 얻은 유일한 것은'http : // localhost : 3000/order/R076027535/ordered_vehicles'입니다. –

+0

그래서'http : // localhost : 3000/order/R076027535/ordered_vehicles'에 게시 중입니다. 이상하다. Fixnum에 대해 form_for를'form.for [@ order.id, @ordered_vehicle] ' – johnkoht

답변

0
그냥 내가 컨트롤러 방법을 추가 할 것입니다, 철저히하기

요청에 따라)

글쎄, 내가 현재 조정하고있는 Spree의 문제로 판명났다. (나는 명시 적으로 언급하지 않았지만 원하지 않았다. 너무 많은 정보를 게시하는 것).

결론 : 상기 방법은 to_paramparamsnumber에 열을 전달할 덮어이었다 Order 모델에서

. 그것을 다시 덮어 쓰지 않았으며, 그냥 그대로두고 적응 시켰습니다. 내 find_order 방법에서 내가 쓴 :

def find_order 
    @order = Order.find_by_number(params[:order_id]) 
    end 

이 또한 내가 테이블에서 주문 번호를 저장 한, 거기에 내가 그 밖으로 생각에 문제가했지만, 명시 적으로 기억할 수 없습니다. 어쨌든, 도와 줘서 고마워.

P. 엉망으로 죄송합니다

관련 문제