diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 7787bab7..7fe23a87 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -49,12 +49,11 @@ class PostsController < ApplicationController end def update - p = post_params @site = find_site @lang = find_lang(@site) @post = find_post(@site) - @post.update_attributes(p) + @post.update_attributes(post_params) if @post.save redirect_to site_posts_path(@site, category: session[:category], lang: @lang) @@ -67,11 +66,10 @@ class PostsController < ApplicationController # Solo permitir cambiar estos atributos de cada articulo def post_params - params.require(:post).permit(:title, :date, :content, :slug, - :cover, :layout, :permalink, :objetivos, :dir, - :duracion, :formato, :habilidades, :recomendaciones, - conocimientos: [], sesiones_ejercicios_relacionados: [], - materiales_requeridos: [], lang: {}, - tags: [], categories: []) + default_post_params = [:title, :date, :content, :slug, :cover, + :layout, :permalink, :dir, + { lang: {} }, { tags: [] }, { categories: [] }] + + params.require(:post).permit(default_post_params + @post.template_params) end end diff --git a/app/models/post.rb b/app/models/post.rb index 8d2d8bb9..ff8f1346 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -227,6 +227,18 @@ class Post end.keys end + # devuelve las plantillas como strong params + def template_params + @template_params ||= template_fields.map do |k| + v = template.get_front_matter(k) + if v.is_a? Array + { k.to_sym => [] } + else + k.to_sym + end + end + end + # Obtiene el tipo de campo para la plantilla def template_form_type_for(field) return if (tt = template.get_front_matter(field)).nil?