2013-03-17 91 views
0

我不完全明白爲什麼會發生這種情況,也許你們中的某些人做了......在這裏。rails 3嵌套資源`新`路徑正在切換

我創建了一個嵌套的資源:

resources :order do 
    resources :ordered_vehicles 
end 

我添加了一個link_tonew行動,並通過了order.id像這樣new_order_ordered_vehicle_path(order.id)在頁面加載很好。問題出在我按下按鈕提交選擇之後。他將路徑從http://localhost:3000/order/3/ordered_vehicles/new切換到http://localhost:3000/order/R076027535/ordered_vehicles,並顯示錯誤Couldn't find Order with id=R076027535 ...去圖。

誤差被升高在控制器在該方法中

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

哪個是before_filter

new.html.haml文件看起來像這樣

= 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" 

id他找不到是@order.number,但我不明白爲什麼開關。

編輯: 只是要徹底,我將添加控制器方法:

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 2013-03-17 16:22:33

+0

我已經發布了路線(第一代碼)。 「R07 ...」是「訂單」表中的另一列「@ order.number」,不知道他爲什麼要切換。網址?按下提交按鈕後,我得到的唯一一個是'http:// localhost:3000/order/R076027535/ordered_vehicles'。 – 2013-03-17 16:40:23

+0

所以它發佈到'http:// localhost:3000/order/R076027535/ordered_vehicles'。真奇怪。嘗試將form_for切換到form_for [@ order.id,@ordered_vehicle]' – johnkoht 2013-03-17 16:44:15

回答

0

按要求;)

嗯,它原來是Spree問題,我目前正在調整(我知道我沒有明確提到它,但並不想要只是發佈太多的信息)。

底線:

Order模型的方法to_param重寫傳遞number列到params。沒有再覆蓋它,只是留在那裏進行改編。在我find_order方法我寫道:

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

而且我已經存儲在表中的順序號,有我相信,指出有問題,但不記得明確。無論如何,感謝您的幫助。

P.S.對不起