私は、ユーザーがトレーニングを予約できるアプリケーションを作成しています。私は、このアプリケーションで1日に1回、ユーザーがより多くではなくなるようにします。トレーニングを予約するためのダイナミックボタンの作成方法
私はUserモデルでnot_booked?
と呼ばれるメソッドを作成しようとしています。引数がtrueの場合はユーザーにブックを送り、そうでない場合はブックにします。
これは私のアプリケーションでは機能しません。理由とその解決方法を知りたいと思います。
Userモデル:
class User < ApplicationRecord
has_many :trainings, through: :bookings
has_many :bookings
def not_booked?(booked)
booked = self.bookings(@training)
booked = true
end
.
.
.
end
トレーニングショービュー:
<div class="row">
<section>
<h1>
HOUR: <%= @training.hour %>
</h1>
</section>
<section>
<h1>
SLOTS: <%= @training.left_slots %>
</h1>
</section>
<center>
<%= render 'bookings/booking_form' if logged_in? %>
<%= render 'bookings/index_bookings' if logged_in? %>
</center>
そしてbooking_form.html.erbビューは次のとおりです。
<% unless current_user?(@user) %>
<% if current_user.not_booked?(@training) %>
<%= link_to "Book", new_training_booking_path(@training), class: "btn btn-primary" %>
<% else %>
<% @bookings.each do |booking| %>
<%= link_to "Unbook", training_booking_path(booking.training, booking), method: :delete, data: { confirm: 'Are you certain you want to delete this?' }, class: "btn btn-primary" %>
<% end %>
<% end %>
<% end %>
私は準備を行うと、私の場合もう一度やり直してみてください。しかし、ユーザーが複数の本をやりたいとは思っていません。
おそらく、ユーザーの予約状況をtrueに設定する方法がわかりません。私はそれをどうやってできるのか知りたい。
コードをその質問に関連するTS。残りはちょうど気を散らすだけです。 – kaikuchn
完了!編集されました!そしてごめんなさい。 –
あなたの現在の実装では、not_booked?はtrueを返します。あなたが 'not_booked? 'メソッドに渡していることが何であれ、それは' booking'として参照されますが、同じ名前のローカル変数を即座に割り当てることになり、メソッドに渡した引数にはアクセスできなくなります。君は。 また、 '@ training'はモデルのどこから来たのですか?それはあなたが引数として渡したかったものでしょうか? – kaikuchn