好的 - 解释这个问题需要一段时间,请耐心等待:
我目前正在学习如何开发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部分的私人声明中?我整体做错了什么?
谢谢。
答案 0 :(得分:1)
如何使用params。在没有.permit部分的私人声明中?
如果您没有提交任何参数,则不需要reservation_params
,这需要params
包含非空reservation
(这意味着,键reservation
,非空值。)
在提交时,您可以在控制器方法中创建reservation
(我假设,create
一个):
def create
@room.reservation.create!
...
end
现在,我想,该方法类似@room.reservation.new(reservation_params)
,因为reservation_params
为空,所以没用。