选项:prompt =>来自f.select的true无法处理编辑操作

时间:2012-01-17 18:01:48

标签: ruby-on-rails-3.1 erb

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

表单部分的片段:

f.select :category_id, @categories, {:prompt => true}

编辑操作

  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

新动作

  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

有什么想法吗?

4 个答案:

答案 0 :(得分:12)

f.select :category_id, @categories, :include_blank => "whatever your prompt says"

这项工作适合我。

但是,我通常会尽量避免使用rails表单助手进行提示,因为它们看起来似乎没有表现出来。

或者,我这样做了:

f.select :category_id, @categories.unshift(["whatever your prompt says", value])

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

答案 1 :(得分:3)

来自Apidock:

select(object, method, choices, options = {}, html_options = {})

所以这会奏效:

f.select :category_id, options_from_collection_for_select(@categories, :id, :name), {prompt: 'Please select ...' }, { class: 'form-control' }

答案 2 :(得分:1)

它按预期工作。如果之前选择并保存了某个值,则不显示提示。

提示与选择 - "主要区别在于,如果选择已经有值,则:提示将不会显示,而:include_blank将始终显示。"

请参阅this API note

答案 3 :(得分:0)

为具有提示值和html选项类的方法选择表单选项:

f.select(:subcription_with, options_for_select(['paypal', 'stripe']), {:prompt => 'Select Payment Method'}, {:class => "form-control slct-box"})

enter image description here