Param丢失或值为空:预留

时间:2017-09-24 15:28:18

标签: ruby-on-rails ruby

好的 - 解释这个问题需要一段时间,请耐心等待:

我目前正在学习如何开发AIRBNB的教程。作为预留模型的一部分,它有start_date / end_date,这两个在预留控制器私有动作中使用。

 private
        def reservation_params
          params.require(:reservation).permit(:start_date, :end_date)
        end

然后,本教程将介绍如何在预订视图下创建表单,然后将在会议室页面上使用该表单。

保留/ _form.html.erb

    <%= form_for([@room, @room.reservations.new]) do |f| %>
          <div class="row">
            <div class="col-md-6">
              <label>Check In</label>
              <%= f.text_field :start_date, readonly: true, placeholder: "Start Date", class: "form-control datepicker" %>
            </div>
            <div class="col-md-6">
              <label>Check Out</label>
              <%= f.text_field :end_date, readonly: true, placeholder: "End Date", class: "form-control datepicker", disabled: true %>
            </div>
          </div>
    :
    :
    :

     <%= f.submit "Book Now", id: "btn_book", class: "btn btn-normal btn-block", disabled: true %>
        <% end %>

我正在努力使课程适应我的目的。我不需要开始/结束日期。我需要用户做的就是点击按钮购买以完成购买(价格和数量是固定的)。所以这就是我要做的事情(显然现在没有成功)

ReservationsController:

private
        def reservation_params
          params.require(:reservation)
        end

保留/ _form.html.erb

 <%= form_for([@room, @room.reservations.new]) do |f| %>
     <%= f.submit "Book Now", id: "btn_book", class: "btn btn-normal btn-block", disabled: true %>
 <% end %>

结果是:PARAM丢失或价值空缺:预订

问题:如何使用params。在没有.permit部分的私人声明中?我整体做错了什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

  

如何使用params。在没有.permit部分的私人声明中?

如果您没有提交任何参数,则不需要reservation_params,这需要params包含非空reservation(这意味着,键reservation,非空值。)

在提交时,您可以在控制器方法中创建reservation(我假设,create一个):

def create
  @room.reservation.create!
  ...
end

现在,我想,该方法类似@room.reservation.new(reservation_params),因为reservation_params为空,所以没用。