需要将 table 列的元素添加到 Rails 上的 Ruby 中的数组
Need to add elements of a table column to an array in Ruby on Rails
所以我正在开发一个涉及狗日托的 Rails 应用程序。我正在尝试做一个最终会帮助预订验证的助手,但现在我只是想让它 显示预订中的所有犬舍 table 并将这些名称放入数组中
这是我遇到的错误 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
至于犬舍,唯一的 table 具有标准的 ID 和名称。
我知道我有点接近了。
预订是 class,因此需要大写。我还建议使用 reservations 而不是 r 作为变量。对于新加入的开发人员来说更容易阅读。希望这对您有所帮助:
reservations = Reservation.all
你的数组有点小应该是
@reservations.each do |reservation| // or @r in your case
在你的代码中 |kennel|实际上被用作个人保留而不是犬舍,因为我猜你想要。如果您的关系正确并且预订了 belongs_to 犬舍,您可以:
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
所以我正在开发一个涉及狗日托的 Rails 应用程序。我正在尝试做一个最终会帮助预订验证的助手,但现在我只是想让它 显示预订中的所有犬舍 table 并将这些名称放入数组中
这是我遇到的错误 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
至于犬舍,唯一的 table 具有标准的 ID 和名称。
我知道我有点接近了。
预订是 class,因此需要大写。我还建议使用 reservations 而不是 r 作为变量。对于新加入的开发人员来说更容易阅读。希望这对您有所帮助:
reservations = Reservation.all
你的数组有点小应该是
@reservations.each do |reservation| // or @r in your case
在你的代码中 |kennel|实际上被用作个人保留而不是犬舍,因为我猜你想要。如果您的关系正确并且预订了 belongs_to 犬舍,您可以:
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