2017-03-11 7 views
0

私は、ユーザーがトレーニングを予約できるアプリケーションを作成しています。私は、このアプリケーションで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に設定する方法がわかりません。私はそれをどうやってできるのか知りたい。

+1

コードをその質問に関連するTS。残りはちょうど気を散らすだけです。 – kaikuchn

+0

完了!編集されました!そしてごめんなさい。 –

+1

あなたの現在の実装では、not_booked?はtrueを返します。あなたが 'not_booked? 'メソッドに渡していることが何であれ、それは' booking'として参照されますが、同じ名前のローカル変数を即座に割り当てることになり、メソッドに渡した引数にはアクセスできなくなります。君は。 また、 '@ training'はモデルのどこから来たのですか?それはあなたが引数として渡したかったものでしょうか? – kaikuchn

答えて

1

あなたnot_booked?方法は、おそらく次のようになります。uのすべての予約の間で予約bが存在しない場合

def not_booked?(training) 
    bookings.where(training_id: training.id).none? 
end 

は、ユーザーuで計上されていない

トレーニングtとしてこれを読みますb.training_id == t.id

+0

は機能しませんでした。ユーザーがすでに1つのブックを持っていてもまだブックのオプションが表示されています –

+0

私が作ったいくつかの仮定は成り立ちません。例えば予約やトレーニングは永続しないかもしれません。または私はあなたの質問を誤解しています..?私は上記の方法が何をしているのかを言葉で説明しました。 – kaikuchn

+0

それは仲間でした!感謝の神はあなたを祝福します –

関連する問題