我需要提供一個沒有AR模型支持的表單。 (我知道這個問題已經以各種方式被問了幾十次,但儘管大量閱讀了實驗,但我仍然無法做到。)RoR:使用沒有AR模型的form_tag
描述我需要的最簡單的方法是通過逆向工程:假設我想要一個帶有「用戶名」字段和「訪問碼」字段的表單。然後我想[提交]按鈕調:
ServicesController#update
與params哈希表設置爲(至少):
params={"service"=>{"credentials"=>{"username"=>"fred", "accesscode"=>"1234"}}, "commit"=>"update credentials", "action"=>"update", "controller"=>"services", "id"=>"54"}
或者只是
params={"credentials"=>{"username"=>"fred", "accesscode"=>"1234"}, "commit"=>"update credentials", "action"=>"update", "controller"=>"services", "id"=>"54"}
,其中 '54'是我想要更新的服務對象的ID。 (我的update()方法會將憑證從params散列中取出並與它們一起做正確的事情。)(我沒有顯示路由,但我不確定這與此有關。)
但是我還沒有想出如何獲得form_tag或form_for來開始我的投標。建議?
更新 根據下面的光圈建議,form_tag似乎是正確的。我收到路由錯誤'沒有路由匹配「/ services/54」'。我去改變我目前的路線之前,我目前有:
resources :premises, :shallow => true do
resources :services
end
這給了我(部分):
edit_service GET /services/:id/edit(.:format) {:action=>"edit", :controller=>"services"}
service GET /services/:id(.:format) {:action=>"show", :controller=>"services"}
PUT /services/:id(.:format) {:action=>"update", :controller=>"services"}
DELETE /services/:id(.:format) {:action=>"destroy", :controller=>"services"}
@aperture:也許關閉。例如,form_for產生了「未定義的方法'merge:for userid:Symbol」錯誤。我發現text_field()需要一個散列作爲其第三個參數(或者第二個,當你通過form.text_field()調用它時) - 是你想要的嗎? – 2011-03-01 22:18:41
@aperture:我應該提到Service *是一個完整的ActiveRecord模型。這裏的練習是創建一個表單來編輯/更新與Service相關的輔助數據*,而不是模型本身的一部分。 – 2011-03-01 22:26:28
應該是form_tag,我的錯誤。檢查上面的編輯 – aperture 2011-03-01 22:41:57