Реших, че това ще бъде обща нужда, но не успях да намеря решение. Следях този ASCIIcast от Райън Бейтс http://railscasts.com/episodes/302-in-place-editing?view=asciicast и вече разполагам с функционално редактиране на място на моя уебсайт. Мисля обаче, че не е интуитивно, че тези записи изобщо могат да се редактират, тъй като те просто се показват като обикновен текстово представяне на текущата стойност на записа, докато не щракнете върху тях. Искам нещо, така че падащото меню за избор да се показва по подразбиране, както би било в нормална форма, както е показано на изображението. Има ли все пак да направите това с помощта на best_in_place или rest_in_place?
best_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:
- Щракнете с десния бутон върху етикета за избор и изберете „Проверка на елемента“
- Щракнете с десния бутон върху елемента, както се вижда в раздела „Елементи“ и изберете „Принудително състояние на елемента“ и след това „задръжте“
Отдясно на инспектора сега трябва да видите стиловете, които се прилагат към състоянието :hover
на елемента. Копирайте ги във вашата таблица със стилове и премахнете частта ":hover" от края на правилото. Може да се наложи да добавите някои допълнителни селектори към правилото, за да сте сигурни, че няма да направите това за всички селекции в целия си сайт.
Падащото меню е поведението по подразбиране за best_in_place, ако първоначалното въвеждане на формуляр е чрез радио бутони. В противен случай можете да използвате :collection поне за валидиране на новото въвеждане на данни. напр. в haml актуализираният отговор трябва да е червен, зелен или син:
.flex1=best_in_place :color, :type => :select, :collection => (["red","blue","green"])