选项:prompt => true来自f.select不能处理编辑操作

6 erb ruby-on-rails-3.1

我在编辑表单上遇到了一些麻烦.由于某些原因,我的选择助手在编辑操作上无法正常工作.它似乎忽略了某个选项:prompt => true并且不显示"请选择"消息.但只有编辑动作,新动作才能正常工作.

形式部分的片段:

f.select :category_id, @categories, {:prompt => true}
Run Code Online (Sandbox Code Playgroud)

编辑动作

  def edit
    @page = Page.find(params[:id])
    @categories = Category.where(:cat_type=>"page").map { |c| [t("category.#{c.slug}",:default=>"#{c.name}"), c.id] }
  end
Run Code Online (Sandbox Code Playgroud)

新的行动

  def new
    @page = Page.new
    @categories = Category.where(:cat_type=>"page").map { |c| [t("category.#{c.slug}",:default=>"#{c.name}"), c.id] }

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @page }
    end
  end
Run Code Online (Sandbox Code Playgroud)

任何的想法?

mat*_*att 13

f.select :category_id, @categories, :include_blank => "whatever your prompt says"
Run Code Online (Sandbox Code Playgroud)

这对我有用.

但是,我通常会尽量避免使用rails表单助手进行提示,因为它们似乎从不表现得很好.

或者,我这样做了:

f.select :category_id, @categories.unshift(["whatever your prompt says", value])
Run Code Online (Sandbox Code Playgroud)

它将数组推送到@categories数组的前面