我正在尝试使用ice_cube和recurring_select宝石创建重复活动。
这是我的_form.html.erb代码:
<%= simple_form_for(@event) do |f| %>
<div class="form-inputs">
<%= f.select_recurring :day, [IceCube::Rule.daily] %>
<%= f.input :start_time %>
<%= f.input :end_time %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
在我的控制器中我(除其他外):
def new
@event = Event.new
end
def create
@event = Event.new(event_params)
respond_to do |format|
if @event.save
format.html { redirect_to @event, notice: 'Event was successfully created.' }
format.json { render :show, status: :created, location: @event }
else
format.html { render :new }
format.json { render json: @event.errors, status: :unprocessable_entity }
end
end
end
def event_params
params.require(:event).permit(:day, :start_time, :end_time, :reserved)
end
如您所见,我想在一周内为每一天创建相同的事件,但如果我提交此表单,实际上我的:day列仍为空。
你能提供一些反馈意见吗?我不知道会出现什么问题
答案 0 :(得分:1)
您的escape_params
似乎是错误的,应该是event_params
,因为您在update
行动中使用了<{1}}:
private
def event_params
params.require(:event).permit(:day, :start_time, :end_time, :reserved)
end
<强>更新强>
在查看recurring_select
gem之后,它发送到服务器的数据是这样的:
event[:day]: {"interval":1,"until":null,"count":null,"validations":null,"rule_type":"IceCube::DailyRule"}
因此,您可以将其存储在单个字段中,这不是一个简单的单值参数。
这里有两个选择,序列化此值并将其存储在单个字段中,或为数据库中的每个参数创建单独的字段。
由于day
字段中的数据是哈希值,因此permit
函数无法使用它。您可以在Rails issue tracker上查看更多信息。