一种方法是在您的VisitsController
def create
@visit = Visit.create(visits_params)
if !@visit.save
render :new, error: "Something went wrong"
else
@payment = @visit.build_payment
end
end
然后在你的visits/create.html.erb,简单地说
<%= form_for @payment do |f| %>
<%= f.hidden_field :visit_id %>
<% end %>
它应该可以工作,但从 RESTFUL 的角度来看它感觉不对。一个更好的方法是在你的config/routes.rb
resources :visits do
resources :payments
end
这将生成以下路线:
GET /visits/:visit_id/payments/new
然后在VisitsController
def create
@visit = Visit.create(visit_params)
if !@visit.save
render :new, error: "Something went wrong"
else
redirect_to new_payment_path(visit_id: @visit.id)
end
end
在你的PaymentsController
def new
@visit = Visit.find(params[:visit_id])
@payment = @visit.build_payment
end
在你的payments/new.html.erb别忘了放
<%= form_for @payment do |f| %>
<%= f.hidden_field :visit_id %>
<% end %>
你有它......如果这没有任何意义,请告诉我。