的常用方法中的Rails這樣做是爲了建立一個滿足的url像這樣的路線:/projects/4/photos/new
。做其他事情取決於你,但Rails使得這樣做很容易。查看更多關於routes in Rails 3。
你在routes.rb
項應該是這個樣子:
resources :projects do
resources :photos
end
然後在app/controllers/photos_controller.rb
你有這樣的「新攝影」表單頁面:
def new
@project = Project.find_by_id(params[:project_id])
end
,這對於行動app/views/photos/new.html.erb
表格提交至:
def create
@project = Project.find_by_id(params[:project_id])
@photo = @project.photos.create(params[:photo])
end
當然你會想在這裏進行錯誤處理和驗證,但這是它的要點。並且記住,使用GET
進行冪等(非狀態改變)動作(例如GET /projects/4/photos
),POST
用於創建新事物(例如POST /projects/4/photos
)和PUT
以更新現有事物(例如PUT /projects/4/photos/8
)。
謝謝Brian。我試圖找出如何通過POST做到這一點,因爲我不希望用戶能夠輕鬆編輯地址欄並最終在另一個項目中。我想沒有辦法做到這一點。再次感謝! – Mark 2011-01-12 06:32:14