ya que estaba, un poco de refactorización para no escribir tantas @

memoizamos site y post cuando podemos
This commit is contained in:
f 2021-05-09 13:11:15 -03:00
parent 8fe343ae45
commit a9da4b3f2c
2 changed files with 33 additions and 31 deletions

View file

@ -85,31 +85,24 @@ class PostsController < ApplicationController
end end
def edit def edit
@site = find_site authorize post
@post = @site.posts(lang: locale).find params[:id] breadcrumb post.title.value, site_post_path(site, post, locale: locale), match: :exact
breadcrumb 'posts.edit', ''
authorize @post
@locale = locale
breadcrumb @post.title.value, site_post_path(@site, @post, locale: locale), match: :exact
end end
def update def update
@site = find_site authorize post
@post = @site.posts(lang: locale).find params[:id]
authorize @post service = PostService.new(site: site,
post: post,
service = PostService.new(site: @site,
post: @post,
usuarie: current_usuarie, usuarie: current_usuarie,
params: params) params: params)
if service.update.persisted? if service.update.persisted?
@site.touch site.touch
forget_content forget_content
redirect_to site_post_path(@site, @post) redirect_to site_post_path(site, post)
else else
render 'posts/edit' render 'posts/edit'
end end
@ -117,34 +110,30 @@ class PostsController < ApplicationController
# Eliminar artículos # Eliminar artículos
def destroy def destroy
@site = find_site authorize post
@post = @site.posts(lang: locale).find params[:id]
authorize @post service = PostService.new(site: site,
post: post,
service = PostService.new(site: @site,
post: @post,
usuarie: current_usuarie, usuarie: current_usuarie,
params: params) params: params)
# TODO: Notificar si se pudo o no # TODO: Notificar si se pudo o no
service.destroy service.destroy
@site.touch site.touch
redirect_to site_posts_path(@site) redirect_to site_posts_path(site)
end end
# Reordenar los artículos # Reordenar los artículos
def reorder def reorder
@site = find_site authorize site
authorize @site
service = PostService.new(site: @site, service = PostService.new(site: site,
usuarie: current_usuarie, usuarie: current_usuarie,
params: params) params: params)
service.reorder service.reorder
@site.touch site.touch
redirect_to site_posts_path(@site) redirect_to site_posts_path(site)
end end
# Devuelve el idioma solicitado a través de un parámetro, validando # Devuelve el idioma solicitado a través de un parámetro, validando
@ -155,7 +144,7 @@ class PostsController < ApplicationController
# solicite a le usuarie crear el nuevo idioma y que esto lo agregue al # solicite a le usuarie crear el nuevo idioma y que esto lo agregue al
# _config.yml del sitio en lugar de mezclar idiomas. # _config.yml del sitio en lugar de mezclar idiomas.
def locale def locale
@site&.locales&.find(-> { I18n.locale }) do |l| @locale ||= site&.locales&.find(-> { I18n.locale }) do |l|
l.to_s == params[:locale] l.to_s == params[:locale]
end end
end end
@ -165,4 +154,14 @@ class PostsController < ApplicationController
def forget_content def forget_content
flash[:js] = { target: 'editor', action: 'forget-content', keys: (params[:storage_keys] || []).to_json } flash[:js] = { target: 'editor', action: 'forget-content', keys: (params[:storage_keys] || []).to_json }
end end
private
def site
@site ||= find_site
end
def post
@post ||= site.posts(lang: locale).find(params[:post_id] || params[:id])
end
end end

View file

@ -14,8 +14,7 @@ class UsuariesController < ApplicationController
# Mostrar todes les usuaries e invitades de un sitio # Mostrar todes les usuaries e invitades de un sitio
def index def index
@site = find_site site_usuarie = SiteUsuarie.new(site, current_usuarie)
site_usuarie = SiteUsuarie.new(@site, current_usuarie)
authorize site_usuarie authorize site_usuarie
breadcrumb 'usuaries.index', '' breadcrumb 'usuaries.index', ''
@ -163,4 +162,8 @@ class UsuariesController < ApplicationController
'invitade' 'invitade'
end end
end end
def site
@site ||= find_site
end
end end