Oto fragment kodu, którego teraz używam:
<%= f.select :project_id, @project_select %>
Jak go zmodyfikować, aby jego wartość domyślna była równa params[:pid]
po załadowaniu strony?
ruby-on-rails
totocaster
źródło
źródło
Odpowiedzi:
To powinno to zrobić:
źródło
options_for_select
jest lepszy sposób. Nadaje się do każdej sytuacji, a także do edycji formularza.Użyj właściwego atrybutu bieżącej instancji (np.
@work.project_id
):źródło
select_tag
. Dzięki, naprawdę mi też pomogło.options_for_select(..., f.object.project_id )
Szyny 3.0.9
źródło
value3], default
Problem z tymi wszystkimi odpowiedziami polega na tym, że ustawiają one pole na wartość domyślną, nawet jeśli próbujesz edytować swój rekord.
Trzeba ustawić domyślną do istniejącej wartości, a następnie tylko ustawić go do rzeczywistej domyślnie jeśli nie mają wartości. Tak jak:
Dla każdego, kto
f.object.field
cię nie zna , zawsze używaj,f.object
a następnie dodaj nazwę pola na końcu.źródło
select2
wtyczką JS. Działa idealnie, jeśli tworzysz lub edytujesz rekordy w tym samym formularzu i używasz select2, zwłaszcza z tekstem zastępczym.Spróbuj tego:
źródło
params[:pid]
nie działało, ale twój przykład działał.jeśli params [: pid] jest ciągiem, który jeśli pochodzi z formularza, to prawdopodobnie będziesz musiał go użyć
aby wybrać właściwy element z listy wyboru
źródło
@project
zmienną identyfikatorem z tabeli bazy danych, zamiast tytułu, ten kod działał dołączony na odwrocieform.select
pomocnika:selected: @project
Dziękuję @danengleZnalazłem rozwiązanie i stwierdziłem, że jestem dość niedoświadczony w RoR.
Wewnątrz kontrolera zarządzającego widokiem opisanym powyżej dodaj:
źródło
źródło
Nie mogłem tego uruchomić i stwierdziłem, że muszę dodać atrybut „zaznaczony” HTML nie tylko do poprawnego
<option>
tagu, ale także do<select>
tagu. Dokumenty MDN dotyczące wybranego atrybutu tagu select mówią:Oznacza to, że kod powinien wyglądać następująco:
źródło
źródło
Alternatywnie możesz ustawić atrybut: project_id w kontrolerze, ponieważ pierwszy argument f.select ściąga ten konkretny atrybut.
źródło
Jeśli spróbujesz wydrukować obiekt f, zobaczysz, że istnieje obiekt f., Który można sondować w celu uzyskania wybranego elementu (dotyczy wszystkich wersji szyn> 2.3)
więc użyj następującego skryptu, aby uzyskać odpowiednią wybraną opcję:
źródło
Wyjaśniono już, Spróbuję podać przykład
niech wybrana lista będzie
Tak więc następujący kod powoduje
Aby więc domyślnie wybrać opcję, musimy użyć opcji select: wartość .
jeśli możesz głosować? zwraca true, ustawia wybrane: 1, a następnie pierwsza wartość zostanie wybrana w innym przypadku.
jeśli opcje select są tylko listą tablic zamiast hast, wówczas wybrana będzie tylko wartość do wyboru, na przykład if
teraz wybrane po prostu zajmie
źródło
Powyższa odpowiedź Mike'a Bethany'ego działała, aby ustawić domyślną wartość podczas tworzenia nowego rekordu i nadal mieć wartość, którą wybrał użytkownik w formularzu edycji. Dodałem jednak weryfikację modelu i nie pozwoli mi to przesłać formularza. Oto, co działało dla mnie, aby przeprowadzić walidację modelu w polu i pokazać wartość domyślną, a także wartość wybraną przez użytkownika w trybie edycji.
walidacja modelu
źródło
To powinno ci pomóc. Po prostu przechodzi
{:value => params[:pid] }
do zmiennej html_options.źródło