我正在開發一個Ruby on Rails應用程序。它有一個嵌套的路線,像這樣:Rails form_for錯誤|如何將嵌套的ActiveRecord對象綁定到表格
Rails.application.routes.draw do
root 'trip_plans#index'
resources :trip_plans do
resources :places, except: [:show, :index]
end
end
的trip_plans
資源具有TripPlan
模型和places
資源具有Place
模型。根據路線,new_trip_plan_place_path
是類似於/trip_plans/:trip_plan_id/places/new
的路線。該views/places/new.html.haml
使用form_for
聲明當前trip_plan
中創建一個新的地方:
- content_for :title do
%title Add a Place to Your Plan
%header.form-header
.container.form-container
.row
.col-xs-12
%h1 Add a Place
%hr
%article
%section
.container.form-container
= render 'form'
相應edit.html.haml
基本上是一樣的,調用同一個_form.html.haml
呈現形式。
的places_controller
的兩個new
和edit
動作是這樣的:
def new
@trip_plan = TripPlan.find(params[:trip_plan_id])
@place = @trip_plan.places.build
end
def edit
@trip_plan = TripPlan.find(params[:trip_plan_id])
@place = @trip_plan.places.build
end
而_form.html.haml
使用@place
像這樣:
= form_for @place do |f|
但作爲@place
是從屬的ActiveRecord對象,Rails是無法找出new
和edit
路徑的正確網址。即使在edit
頁面上,它也會顯示新的表格。
我該如何解決這個問題?
在此先感謝!
嘗試改變這一行'@place = @ trip_plan.places.build'到在'edit'方法中'@place = Place.find(params [:id])'' – Pavan