需要在Ruby on Rails

时间:2018-04-19 14:57:10

标签: ruby-on-rails helpers

所以我正在开发一个涉及狗日托的Rails应用程序。我正在尝试帮助最终帮助预订验证但是现在我只是想把它变成从预订表中显示所有的狗舍并将这些名字放入数组

这是我得到的错误error image

以下是预约助手的代码:

module ReservationsHelper

  def available_kennels
    availability = Array.new

    @r.all.each do|kennel|
    availability.push(kennel)
    end

    return availability
  end
end

在预订控制器中,我将@r分配给reservation.all

这是控制器:

class ReservationsController < ApplicationController
  def new
    @reservation = Reservation.new
    @d = current_user.dogs
    @r = reservation.all
  end

  def create
    @reservation = current_user.reservations.build(r_params)

    if @reservation.save
      flash[:success] = "Reservation has been made"
    else
      render new
    end
  end

  def r_params
    params.require(:reservation).permit(:dog_id, :kennel_id, :startdate, :enddate, :status, :report)
  end

end

至于kennels,这个表唯一具有标准id和名称。

我知道我很亲密。

1 个答案:

答案 0 :(得分:1)

预订是一个类,因此需要大写。我还建议使用预留而不是r作为变量。更容易阅读新的开发人员。希望这可以帮助你:

reservations = Reservation.all

你的数组有点应该是

@reservations.each do |reservation| // or @r in your case

在你的代码中| kennel |实际上被用作个人预订而不是狗窝,因为我猜你想要的。如果您的关系是正确的并且预订属于狗舍,您可以:

def available_kennels(@reservations)
  availability_array = []
  @reservations.each do |reservation|
    availability_array = availability_array.push(reservation.kennel.name)
  end 
  return availability_array 
end 

同样,我稍微更改了变量名称,以帮助您了解正在发生的事情。当您将其放入管道时,您正在定义预留。要在ruby中定义数组,您可以执行array = []。它与javascript有点不同。

如果您想在视图中获取列表,您还可以使用视图模板:

http://guides.rubyonrails.org/layouts_and_rendering.html

  <ul>
    @reservations.each do |reservation|
      <li>
        <%= reservation.kennel.name %>
      </li>
    end 
  </>ul