我正在构建我的第一个rails应用程序并且卡住了,并希望有人可以帮助我。我正在寻找在控制器中设置变量的正确方法,以便在用户尚未注册时显示“注册”按钮,并在用户已注册时显示取消按钮。
我有一个模型惊悚 - 这是一个培训的可能时间段,一个用户可以进行预订。这些列在培训/展示中:
<% @thrills.each do |thrill| %>
<%= thrill.thrilldate.strftime("%a %e %b '%y") %>
<% if booked %>
Already booked
<% else %>
<%= link_to "Enroll", thrill_reservations_path(thrill), method: :post , class: "btn btn-primary" %>
<% end %>
<% end %>
My TrainingsController看起来像:
def show
@thrills = @training.thrills
@booked = Reservation.where("thrill_id = ? AND user_id = ?", thrill.id, current_user.id).present? if current_user
end
部分@ thrill.id似乎没有正确设置,因为我不断收到错误:
(未定义的局部变量或方法`thrill'for TrainingsController:0x9ffee50)
我尝试了几种组合,但我希望有人能够简单地解释什么是对的,背后的逻辑是什么。提前谢谢!
修改 我现在通过在视图中设置if-function暂时解决:
<% @thrills.each do |thrill| %>
<% if Reservation.where("thrill_id = ? AND user_id = ?", thrill.id, current_user.id).present? %>
Al geboekt
<% else %>
<%= link_to "Inschrijven", thrill_reservations_path(thrill), method: :post , class: "btn btn-primary" %>
<% end %>
如果有人知道如何在Controller中设置Reservation.where我真的很感激!感谢我收到的所有回复!