опция: prompt => true из f.select не работает в действии редактирования - PullRequest
6 голосов
/ 17 января 2012

У меня проблемы с формой редактирования. По какой-то причине мой помощник select не работает должным образом в действии редактирования. Кажется, по какой-то причине он игнорирует параметр: 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 ]

12 голосов
/ 23 марта 2012
f.select :category_id, @categories, :include_blank => "whatever your prompt says"

Эта работа для меня.

Однако я обычно стараюсь избегать подсказок с помощниками рельсов, потому что они, кажется, никогда не ведут себя правильно.

Как вариант, я сделал это так:

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

, который перемещает массив в начало массива @categories

3 голосов
/ 14 августа 2013

От 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' }
1 голос
/ 03 апреля 2015

Работает как положено.Он не показывает подсказку, если значение было выбрано и сохранено ранее.

Подсказка против выбора - «Основное отличие состоит в том, что, если выбор уже имеет значение, тогда: приглашение не будет отображаться, тогда как:include_blank всегда будет. "

См. это примечание API .

0 голосов
/ 17 марта 2014

выберите параметр для формы для метода со значением подсказки и html-классом параметров:

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

enter image description here

...