我很生气,因为当我第一次保存表单(创建动作)时,我的所有f.select
都不关心我的选择。实际上,当我在我的节目页面或索引页面时,我看不到任何已保存的值。
我需要编辑我的表单,再次选择并再次保存:tadam!这行得通。这是愚蠢的,因为我必须每两步完成一次才能使它发挥作用。
你知道为什么吗?
以下是我的一个表单的示例代码:
<%= form.select(:category_id, options_for_select(@categories, :selected => form.object.category_id), {}, {required: 'true', class: 'form-control form-control-lg custom-select'}) %>
更新:
def create
@event = Event.new(event_params)
@event.category_id = params[:category_id]
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
端
def new
@event = Event.new
@categories = Category.all.map{|c| [ c.name, c.id ] }
@disable_nav = true
端
感谢您的帮助:)
答案 0 :(得分:0)
<%=form.select :category_id, @categories, {}, {required: true, class: 'form-control form-control-lg custom-select'}%>
我认为您不需要指定:selected => form.object.category_id
f.select
作为对象category_id
本身的提取f
来选择。
编辑答案: -
至于我猜想创建动作,你不会得到params[:category_id]
但它的params[:event][:category_id]
@event.category_id = params[:event][:category_id]