2012-01-18 61 views
45

Bueno, sé que no se debe preguntar aquí, pero no encontré un lugar mejor para obtener una respuesta. Esta pregunta fue hecha en la entrevista de una buena compañía.¿Podemos llamar el método de un controlador desde una vista (como lo llamamos idealmente desde el helper)?

En Rails MVC, ¿puede llamar al método de un controlador desde una vista (como lo llamamos idealmente desde el helper)? Si es así, ¿cómo?

No pude responder esa pregunta esa vez. ¿Podrías por favor ayudar?

+0

Solo quiero preguntar si es posible o no ... ¡No se debe hacer! –

Respuesta

113

Aquí está la respuesta:

class MyController < ApplicationController 
    def my_method 
    # Lots of stuff 
    end 
    helper_method :my_method 
end 
+6

Ya dije esto ... – Pavling

+6

¿cómo se llama 'my_method' desde la vista? –

+4

<% = my_method%> o <% my_method%> – Laerte

9

no has probado nunca, pero llamar a métodos públicos es similar a:

@controller.public_method 

y métodos privados:

@controller.send("private_method", args) 

Ver más detalles here

5

hacer que su método de acción ayudante usando helper_method :your_action_name

class ApplicationController < ActionController::Base 
    def foo 
    # your foo logic 
    end 
    helper_method :foo 

    def bar 
    # your bar logic 
    end 
    helper_method :bar 
end 

O también se puede realizar todas las acciones como su método de ayuda usando: helper :all

class ApplicationController < ActionController::Base 
    helper :all 

    def foo 
    # your foo logic 
    end 

    def bar 
    # your bar logic 
    end 
end 

En ambos casos, puede acceder a foo y a la barra desde todos los controladores.

Cuestiones relacionadas