我目前正在开发一个客户仪表板,客户可以在那里看到新的报价,预订等等。
现在的问题是我有一个reservations controller
和一个dashboards controller
我想在index.html.erb
文件夹的dashboards
中显示一个付款按钮。例如:
<% @services.each do |service| %>
<%= form_for([@service, @service.reservations.new]) do |f| %>
<div class="col-12 col-sm-4">
<%= f.submit "Bestellen", class: "btn btn-primary", style: 'float:right' %>
</div>
<% end %>
<% end %>
但是随后出现以下错误:
ActionView::Template::Error (undefined method `reservations' for nil:NilClass):
这是我的预定负责人:
def create
service = Service.find(params[:service_id])
if current_user == service.user
flash[:alert] = "Du kannst nicht dein eigenes Angebot kaufen"
elsif current_user.stripe_id.blank?
flash[:alert] = "Füge eine Zahlungsmehtode hinzu"
return redirect_to payment_method_path
else
@reservation = current_user.reservations.build(reservation_params)
@reservation.service = service
@reservation.price = service.price
charge(service, @reservation)
end
redirect_to dashboard_path
end
我的仪表板控制器
def index
@services = Service.all
end
所以我想我只是在预订文件夹中创建文件_form.html.erb
,然后在仪表板<%= render 'reservations/form %>
中使用index
,但这没用。
答案 0 :(得分:1)
您需要使用循环变量而不是未定义的实例变量...
<% @services.each do |service| %>
<%= form_for [service, service.reservations.new] do |f| %>
<div class="col-12 col-sm-4">
<%= f.submit "Bestellen", class: "btn btn-primary", style: 'float:right' %>
</div>
<% end %>
<% end %>