簡體   English   中英

Rails 5:從另一個控制器訪問create方法

[英]Rails 5: Access create method from another controller

我目前正在開發客戶儀表板,客戶可以在那里查看新的報價,預訂等等。

現在的問題是我有一個reservations controller和一個dashboards controller

我想在dashboards文件夾的index.html.erb顯示一個付款按鈕。 例如:

<% @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文件夾中創建一個文件_form.html.erb ,然后在儀表板index使用<%= render 'reservations/form %> _form.html.erb <%= render 'reservations/form %> ,但這是行不通的。

您需要使用循環變量而不是未定義的實例變量...

<% @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 %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM