2011-01-11 44 views
1

我覺得這應該是一件容易的事情,但我很難。如何在Ruby on Rails中將一個參數從一個視圖傳遞到另一個視圖,使用POST

我在Project的實例變量ID中有一個值。我想將該值傳遞給新的「照片」頁面,以將與該特定項目創建的每張照片相關聯,但我不希望項目ID顯示在可見查詢字符串中。

我試過使用link_to和button_to,但(我懷疑),因爲我在我的路線中使用「資源:照片」,所有來到photo#new的請求都被解釋爲GET而不是POST 。

Helllllllllllllllllp!

感謝任何能夠給我一些見解的人,我已經在過去的一兩個小時內對此自殺了。

--mark

回答

1

的常用方法中的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)。

+0

謝謝Brian。我試圖找出如何通過POST做到這一點,因爲我不希望用戶能夠輕鬆編輯地址欄並最終在另一個項目中。我想沒有辦法做到這一點。再次感謝! – Mark 2011-01-12 06:32:14

相關問題