best_in_place показать опцию выпадающего меню

Я подумал, что это будет общая необходимость, но не удалось найти решение. Я следил за этим ASCII-трансляцией Райана Бейтса http://railscasts.com/episodes/302-in-place-editing?view=asciicast и теперь у меня есть функция редактирования на месте на моем веб-сайте. Тем не менее, я думаю, что это не интуитивно понятно, что эти записи вообще доступны для редактирования, так как они просто отображаются как текстовое представление текущего значения записи, пока вы не нажмете на них. Я хочу что-то, чтобы выпадающий список отображался по умолчанию, как в обычной форме, как показано на рисунке. Есть ли способ сделать это с помощью best_in_place или rest_in_place? Я хотел бы иметь это шоу все время

3 ответа

Я знаю, что это не совсем тот ответ, который вы ищете, но вы можете стилизовать значения best_in_place с помощью класса.best_in_place.

Я сделал что-то вроде этого на своем веб-сайте, что помогает показать, что значение можно редактировать:

.best_in_place {
    padding-right: 18px;
    background-image: url('*/ link to an edit icon /*');
    background-size: 15px auto;
    background-position: right center;
    background-repeat: no-repeat;
    cursor: pointer;
}

.best_in_place:hover {
  background-color:#eeeeee;
}

Я думаю, что вы хотите сделать, это найти стили, которые применяются к состоянию элемента при наведении, и скопировать их в нормальное состояние элемента тоже.

В Chrome инспектор:

  • Щелкните правой кнопкой мыши на теге select и выберите "Inspect element"
  • Щелкните правой кнопкой мыши по элементу, как показано на вкладке "Элементы", выберите "Состояние элемента силы", а затем "зависание".

Теперь справа от инспектора вы должны увидеть стили, которые применяются к :hover состояние элемента. Скопируйте их в свою таблицу стилей и удалите часть ": hover" из конца правила. Возможно, вам понадобится добавить несколько дополнительных селекторов в правило, чтобы убедиться, что вы не делаете это для всех вариантов выбора на всем сайте.

Раскрывающийся список - это поведение по умолчанию для best_in_place, если исходный ввод формы осуществляется с помощью переключателей. В противном случае вы можете использовать:colllection как минимум для проверки новой записи данных. например, в haml обновленный ответ должен быть красным, зеленым или синим:

.flex1=best_in_place :color, :type => :select, :collection => (["red","blue","green"])

Другие вопросы по тегам