Rails - 编辑/更新后的表单选择控件中的第一项

时间:2013-06-22 06:09:43

标签: ruby-on-rails ruby-on-rails-3

当用户编辑用户事件时,他们会被重定向到用户页面,该页面会显示指向用户事件的链接。

更新后,如果他们再次点击同一链接进行编辑,他们会在编辑表单中看到选择控件的第一个值,而不是他们在上次编辑中选择的新值。

新数据实际上已保存到数据库中。

这仅适用于选择控件。对文本字段和复选框的更改会显示新值。

因此,选择的第一项始终显示。在选择控件中未选择用户选择的值。

一如既往,提前谢谢......

<%= f.label      :title, "Title (max 150 characters)" %>
<%= f.text_area :title %>

<div>
  <%= f.label      :user_event_type, "Event type" %>
  <%= f.select :user_event_type, options_for_select([['Sales Meeting',1],['Training',2],['Legal Briefing',3]]), {prompt: "select event type"} %>
</div>

  def edit
    @user_event = UserEvent.find(params[:id])    
  end

  def update
    @user_event = UserEvent.find(params[:id])    
    if @user_event.update_attributes(params[:user_event])
      flash[:success] = "Event successully updated"
      redirect_to user_url(current_user)
    else
      render 'edit'
    end
  end  

1 个答案:

答案 0 :(得分:1)

这篇文章给出了答案:

Ruby on Rails: Why a select box does not show the current object value?

只需删除options_for_select,只需将2-d数组作为第二个参数传递给select方法,它就会自动分配所选。

在:

<%= f.select :state, options_for_select([['Alaska',1],['Florida',2],['Texas',3]]) %>

在:

<%= f.select :state, [['Alaska',1],['Florida',2],['Texas',3]] %>