class I18nController < ApplicationController include Pundit before_action :authenticate! def index authorize :i18n @site = find_site redirect_to site_i18n_edit_path(@site) end def edit authorize :i18n @site = find_site @lang_from = params.fetch(:from, I18n.locale.to_s) @lang_to = params.fetch(:to, @lang_from) @options = I18n.available_locales.map do |lang| [ t("i18n.#{lang.to_s}"), lang.to_s ] end end def update authorize :i18n @site = find_site @lang_to = params.require(:i18n).require(:lang_to) # No usamos params porque nos obliga a hacer una lista blanca de # todos los parĂ¡metros que queremos, pero no tenemos forma aun de # pasarse a permit un array de todas las keys y sus tipos en base al # idioma que ya existe p = request.parameters[:i18n][@lang_to] i = JekyllI18n.new(site: @site, lang: @lang_to, attributes: p) if i.save redirect_to site_path(@site) else render 'i18n/edit' end end end