在Ruby on Rails控制器中为每个do循环设置变量

时间:2016-08-22 21:05:35

标签: ruby-on-rails controller

我正在构建我的第一个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我真的很感激!感谢我收到的所有回复!

0 个答案:

没有答案