tutorial rails que ejemplos descargar curso caracteristicas aprender ruby-on-rails ruby-on-rails-3

ruby-on-rails - ejemplos - ruby on rails que es



Rieles: cómo usar un ayudante dentro de un controlador (5)

En Rails 5 usa la función helpers.helper_function en tu controlador.

Ejemplo:

def update # ... redirect_to root_url, notice: "Updated #{helpers.pluralize(count, ''record'')}" end

Fuente: a partir de un comentario de @Markus sobre una respuesta diferente. Sentí que su respuesta merecía su propia respuesta, ya que es la solución más limpia y fácil.

Referencia: github.com/rails/rails/pull/24866

mientras me doy cuenta de que se supone que debes usar un ayudante dentro de una vista, necesito un ayudante en mi controlador mientras construyo un objeto JSON para regresar.

Se parece un poco a esto:

def xxxxx @comments = Array.new @c_comments.each do |comment| @comments << { :id => comment.id, :content => html_format(comment.content) } end render :json => @comments end

¿cómo puedo acceder a mi ayudante html_format ?


En general, si el asistente se va a usar en controladores (justos), prefiero declararlo como un método de instancia de la class ApplicationController .


Mi problema se resolvió con la Opción 1. Probablemente la forma más simple es incluir su módulo auxiliar en su controlador:

class ApplicationController < ActionController::Base include ApplicationHelper ...


Puedes usar

  • @modelo. (Carriles 2)
  • view_context. (Carriles 3) (ADVERTENCIA: esto crea una nueva instancia de vista por llamada)
  • ActionController :: Base.helpers
  • incluir helper en una clase singleton y luego singleton.helper
  • incluir el ayudante en el controlador (ADVERTENCIA: hará que todos los métodos auxiliares se conviertan en acciones del controlador)

Nota: Esto fue escrito y aceptado nuevamente en los Rails 2 días; hoy en día la respuesta de grosser (abajo) es el camino a seguir.

Opción 1: Probablemente la forma más simple es incluir su módulo auxiliar en su controlador:

class MyController < ApplicationController include MyHelper def xxxx @comments = [] Comment.find_each do |comment| @comments << {:id => comment.id, :html => html_format(comment.content)} end end end

Opción 2: O puede declarar el método auxiliar como una función de clase, y usarlo así:

MyHelper.html_format(comment.content)

Si desea poder usarlo como una función de instancia y una función de clase, puede declarar ambas versiones en su ayudante:

module MyHelper def self.html_format(str) process(str) end def html_format(str) MyHelper.html_format(str) end end

¡Espero que esto ayude!