我有3个模型,分类,分类价格和预订。 ClassPrices属于Classes,而Bookings属于ClassPrices。我在ClassPrices页面上无法显示“预订”表单。
1。 route.rb
resources :classses do
resources :class_prices do
resources :bookings
end
end
2。 class_price.rb
class ClassPrice < ApplicationRecord
belongs_to :classs
has_many :bookings
end
3。 bookings.rb
class Booking < ApplicationRecord
belongs_to :user
belongs_to :class_price
end
4。 bookings_controller.rb
def new
@booking = Booking.new
end
我使用的是Simple Form gem,由于我可以拥有的代码量有限,所以这是表单的标题:
<%= simple_form_for [@classs.class_prices, @class_price.bookings.new] do |f| %>
我得到的错误是:
undefined method `to_model' for #<ClassPrice::ActiveRecord_Associations_CollectionProxy:0x00007fcf01a70ff8>
Did you mean? to_xml
编辑:
5。 class_prices_controller.rb
def show
@classs = Classs.find(params[:classs_id])
@class_price = ClassPrice.find(params[:id])
@booking = Booking.new
@classs.class_prices.find(params[:id]).bookings.create(booking_params)
end
答案 0 :(得分:2)
ClassPrice :: ActiveRecord_Associations_CollectionProxy:0x00007fcf01a70ff8的未定义方法“ to_model”
@classs.class_prices
返回一个集合,并且simple_form_for
(或任何其他表单助手)中的第一个参数应该从不为集合。我相信应该是
<%= simple_form_for [@class_price, @class_price.bookings.new] do |f| %>
更新:
根据您的路线,应该是
<%= simple_form_for [@classs, @class_price, @booking] do |f| %>