我创建时所有的f.select都没有保存我的价值(但是它适用于编辑),为什么?

时间:2018-05-26 16:58:43

标签: ruby-on-rails forms

我很生气,因为当我第一次保存表单(创建动作)时,我的所有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

感谢您的帮助:)

1 个答案:

答案 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]