Ruby on rails 将appointment.id传递到booking.appointment\u id
我有一个约会对象和一个预订对象。预约属于预约,预约有很多预约 我想在创建时将约会ID传递给bookings.appointment\u ID。我该怎么做 *我已经根据乔丹安德烈的建议编辑了我的代码。现在我得到以下错误:Ruby on rails 将appointment.id传递到booking.appointment\u id,ruby-on-rails,ruby,ruby-on-rails-3,parameter-passing,Ruby On Rails,Ruby,Ruby On Rails 3,Parameter Passing,我有一个约会对象和一个预订对象。预约属于预约,预约有很多预约 我想在创建时将约会ID传递给bookings.appointment\u ID。我该怎么做 *我已经根据乔丹安德烈的建议编辑了我的代码。现在我得到以下错误: NoMethodError in BookingsController#new undefined method `bookings' for nil:NilClass 在我的主页视图中,我有: <% @appointments.each do |appointment
NoMethodError in BookingsController#new
undefined method `bookings' for nil:NilClass
在我的主页视图中,我有:
<% @appointments.each do |appointment| %>
<%= link_to "new Booking", new_appointment_booking_path(appointment)%>
<%end%>
路线
resources :appointments do
resources :bookings
end
非常感谢你的帮助
耙道:
POST /appointments/:appointment_id/bookings(.:format) bookings#create
GET /appointments/:appointment_id/bookings/new(.:format) bookings#new
GET /appointments/:appointment_id/bookings/:id/edit(.:format) bookings#edit
Rails关联允许您基于现有记录创建记录。目前,对于从表单传递到控制器的参数,您有点过火了 例如,您可以更改
create
方法,以遵循您为预订和预约模型声明的相同关联模式:
@booking = @appointment.bookings.new(params[:booking])
这将获取已存在的@约会
记录的id,并将其设置在新的@booking
实例变量上
还有,我想看看。不确定这两种型号的当前路线是什么样子,但可能是这样的:
resources :appointments do
resources :bookings
end
这将为您拥有
新预订路径的表单提供一种更干净的方法。它将更改为新的预约路径(@appointment)
。这会将约会ID传递给您的预订管理员,您可以在那里为约会创建相关记录。谢谢Jordan,我更新了代码。现在程序正在传入正确的appointment\u id参数,但我收到一个no-method错误。如何解决此问题?在执行@booking=@appointment.bookings.new(params[:booking])
之前,是否确定在创建控制器方法中设置了@appointment实例变量?这是什么样子的?我将@appointment=appointment.find(params[:appointment\u id])放在前面,得到了以下错误:没有id就找不到约会您是否遵循了我上面提出的嵌套资源路由建议?这将在URL参数中为您提供约会id。“无方法”错误和“约会”错误是由于约会id未传递给您的create
方法而导致的。我在那里有它。我还有一个额外的(资源:预订)在嵌套的之外。删除它会导致以下错误:没有与[POST]“/bookings”匹配的路线。
resources :appointments do
resources :bookings
end