我正在創建一個簡單的Rails 3應用程序時遇到以下問題。它在駕駛着我。在創建嵌套資源時Rails路由與respond_with錯誤
我的模型:
class Vehicle < ActiveRecord::Base
has_many :vehicle_pictures, :dependent => :destroy
def
class VehiclePicture < ActiveRecord::Base
belongs_to :vehicle
end
我的routes.rb:
MyApp::Application.routes.draw do
resources :vehicles do
resources :pictures, :controller => :vehicle_pictures
end
end
我rake routes
輸出:
vehicle_pictures GET /vehicles/:vehicle_id/pictures(.:format) {:action=>"index", :controller=>"vehicle_pictures"}
POST /vehicles/:vehicle_id/pictures(.:format) {:action=>"create", :controller=>"vehicle_pictures"}
new_vehicle_picture GET /vehicles/:vehicle_id/pictures/new(.:format) {:action=>"new", :controller=>"vehicle_pictures"
edit_vehicle_picture GET /vehicles/:vehicle_id/pictures/:id/edit(.:format) {:action=>"edit", :controller=>"vehicle_pictures"}
vehicle_picture GET /vehicles/:vehicle_id/pictures/:id(.:format) {:action=>"show", :controller=>"vehicle_pictures"}
PUT /vehicles/:vehicle_id/pictures/:id(.:format) {:action=>"update", :controller=>"vehicle_pictures"}
DELETE /vehicles/:vehicle_id/pictures/:id(.:format) {:action=>"destroy", :controller=>"vehicle_pictures"}
我vehicle_pictures_controller.rb:
class VehiclePicturesController < ApplicationController
before_filter :find_vehicle
respond_to :html, :json, :xml
private
def find_vehicle
@vehicle = Vehicle.find(params[:vehicle_id])
end
public
# GET /vehicle/:id/pictures
def index
@pictures = @vehicle.vehicle_pictures
respond_with(@pictures)
end
# GET /vehicle/:vehicle_id/pictures/new
def new
@picture = VehiclePicture.new
@picture.vehicle = @vehicle
respond_with(@picture)
end
# POST /vehicle/:vehicle_id/pictures
def create
@picture = @vehicle.vehicle_pictures.build(params[:vehicle_picture])
flash[:notice] = 'Vehicle picture was successfully created.' if @picture.save
respond_with(@picture)
end
# GET /vehicle/:vehicle_id/pictures/:id
def show
@picture = @vehicle.vehicle_pictures.find(params[:id])
respond_with(@picture)
end
# DELETE /vehicle/:vehicle_id/pictures/:id
def destroy
@picture = @vehicle.vehicle_pictures.find(params[:id])
@picture.destroy
respond_with(@picture)
end
end
當我發佈一個新的車輛圖片爲預期的創建方法被調用,但我得到這個錯誤:如果我改變respond_with
到respond_with(@picture, :location => vehicle_picture_url(@vehicle.id, @picture.id))
工作的事情
No route matches {:controller=>"vehicle_pictures", :action=>"show", :vehicle_id=>#<VehiclePicture id: 24, created_at: "2011-04-08 15:07:53", updated_at: "2011-04-08 15:07:53", picture: nil, description: "", vehicle_id: 1>}
。
但從我的理解我不應該這樣做。我究竟做錯了什麼?
謝謝你很多!需要接受! – 2012-08-20 13:44:48
我愛你,但這是記錄在哪裏!?太令人沮喪了...... – 2012-10-18 01:53:29
這裏記錄了http://api.rubyonrails.org/classes/ActionController/Responder.html – malclocke 2012-11-13 01:11:24