2015-04-08 6 views
6

Mam model produktu z polemo nazwie dynamic.Czy można wyświetlić formularz z polami dla właściwości jsonb?

mam faktycznie 2 rekordy produktów

Produkt 1:

dynamic = {"name": "super product 1", "description": "lorem ipsum text" } 

Produkt 2:

dynamic = {"title": "this is an ebook", "author": "john doe", "creation_date": "2015"} 

Aby edytować każdy produkt trzeba pokazać formularza. dla produktu 1wola forma zawiera 2 pola (nazwa i opis), a dla produktu 2 wola forma zawiera 3 pola (tytuł, autor, CREATION_DATE)

Szukałem, ale wydaje się, że wszystko artykuły, które znalazłem mówi o tym, jak używać konsoli do zapisywania lub edycji pola json, ale nikt nie mówi o tym, jak używać formularza.

proszę o pomoc? Dzięki

Odpowiedz

6

Jeśli używasz simple_form można zrobić coś takiego:

f.simple_fields_for :dynamic do |dynamic_f| 
    @product.dynamic.each do |k,v| 
    dynamic_f.input k.to_sym 
    end 
end 

Nie zapomnij, aby umożliwić parametry w sterowniku jak ten:

params.require(:product).permit(dynamic: [:name, :description, :title, :author, :creation_date]]) 

Zawsze jest dobra praktyka aby dodać do białej listy określone parametry, których potrzebujesz, ale jeśli chcesz zezwolić na wszystko w dynamicznej formie, możesz wypróbować coś takiego:

params.require(:product)permit(**permitted paramters in here**).tap do |whitelisted| 
    whitelisted[:dynamic] = params[:product][:dynamic] if params[:product][:dynamic] 
end 

lub umożliwienia wszystko dla zastosowania modelu produktu:

params.require(:product).permit! 

nie jest to zalecane, choć jak to zostawić inne dane poza polem otwartym json być nadpisane.

+0

czy powinienem zrobić coś, aby umożliwić te klucze w ramach silnych parametrów lub w modelu za pomocą attr_accessor lub coś w tym stylu? – medBo

+0

Robię to z silnymi parametrami. Zaktualizowałem odpowiedź, aby pokazać, jak sobie z tym radzę. – IngoAlbers

+0

Dziękuję za aktualizację, ale klucze "dynamicznego" pola nie są naprawione, za każdym razem tworzę różne klucze, mogą to być inne rzeczy nie tylko (nazwa, opis, tytuł, autohor, data utworzenia) – medBo

Powiązane problemy