Hi again, sorry for many questions. In mi HomeController, I have the
“hi” method, in this method I use an “if” for show a different message
for a registered user or a guest. When I call in “home/index” my
method “hi”, show me this error message:
“Stack level too deep”
class HomeController < ApplicationController
def hi
if (current_user)
@username = current_user_session.user.username
@welr = ‘Bienvenid@ ’ + @username.to_s + ’ a nuestra web!’
render ‘home/index’
else
@weli = “Bienvenid@ invitad@, no dude en registrarse!”
end
end
end
home/index
Holaaaa
<%= @controller.hi %>
Well, I have trying find the solution, but I haven’t can. Can anyone
help me?
Rewards, Ivn
most likely
@username = current_user_session.user.username
which will probably work better as
@username = current_user.username
and
@welr = ‘Bienvenid@ ’ + @username.to_s + ’ a nuestra web!’
is better as
@welr = “Bienvenid@ #{@username} a nuestra web!”
On Sat, Jun 11, 2011 at 10:06 AM, Distriker
<[email protected]
wrote:
Hi again, sorry for many questions. In mi HomeController, I have the
“hi” method, in this method I use an “if” for show a different message
for a registered user or a guest. When I call in “home/index” my
method “hi”, show me this error message:
“Stack level too deep”
On 11 Jun 2011, at 19:06, Distriker wrote:
render 'home/index'
...
end
end
home/index
Holaaaa
<%= @controller.hi %>
You are rendering home/index which is calling hi which is rendering
home/index which is calling hi which is rendering home/index which is
calling hi which is rendering home/index which is calling hi which is
rendering home/index which is calling hi which is rendering home/index
which is calling hi which is
The whole thing is wrong anyway. The “hi” method should be a helper
and not a controller method, it shouldn’t render anything either.
Using @controller should be avoided for the kind of thing you want to
do (if used at all to start off with, unless you want to show some
logging in your views in development mode)
All you want is
class HomeController < ApplicationController
def index
end
end
class HomeHelper < ApplicationHelper
def hi
…
end
end
home/index
Holaaaa
<%= hi %>
Best regards
Peter De Berdt
On Sat, Jun 11, 2011 at 1:06 PM, Distriker
[email protected]wrote:
@username = current_user_session.user.username
<%= @controller.hi %>
Lo que estas tratando de hacer aqui se hace en los helpers no en el
control
, las funciones que se desea usar para generar texto o algun valor en la
vista se colocan en los helper, los controles se usan para procesar
request
y no tiene sentido hacer que desde el index se llame a hi pues generas
un
request para index y cuando este se genera llamas a hi con otro request
que
de hecho necesita una ruta y un render para funcionar como quieres, pero
la
solucion mas simple es poner esta funcion en un helper.
On Sat, Jun 11, 2011 at 1:06 PM, Distriker
[email protected]wrote:
@username = current_user_session.user.username
<%= @controller.hi %>
Well, I have trying find the solution, but I haven’t can. Can anyone
help me?
Rewards, Ivn
tambien puedes hacerlo de esta forma
def index
@welcome = hi
end
private
def hi
if user_signed_in?
return “Bienvenid@ #{current_user.username} a nuestra web!”
else
return “Bienvenid@ invitad@, no dude en registrarse!”
end
end
y en la vista
Holaaaa
<%= @welcome %>
nunca interpoles (sustituyas variables en cadenas) usando + (signo de
mas),
en ruby siempre es preferible user #{ }.
Esta forma que he puesto es por si insisten en usar la funcion desde el
control, como dije antes, las funciones en los controles que se acceden
desde la vista siempre son para procesar request, no los generes sin
pensar
la secuencia que se crea en el server. Si desea funciones en a vista usa
los
helpers, declaralas ahi y luego llamalas desde la vista , estaran
accecible
sin problema. En los controlles pueden poner funcione para procesar
sierta
logica y no request, y lo que se hace es que solo se hace para acceder
de
desde el control mismo y se protegen con un private.
please confirm that the code in the helper is like this
module HomeHelper
def hi
if user_signed_in?
return “Bienvenid@ #{current_user.username} a nuestra web!”
else
return “Bienvenid@ invitad@, no dude en registrarse!”
end
end
end
in ruby there is no multi inheritance but you can import modules into
classes, helpers are modules that are auto imported to he views of a
given
controller by rails , it appears you have deleted the module declaration
inside the helper or you have placed the function outside the module
declaration , in any case is if it still does not work please post the
code
in your helper.
On 06/11/2011 07:40 PM, radhames brito wrote:
end
Rewards, Ivn
if user_signed_in?
<%= @welcome %>
pueden poner funcione para procesar sierta logica y no request, y lo
que se hace es que solo se hace para acceder de desde el control mismo
y se protegen con un private.
You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Hi Martin, Peter and Radhames, I understand your explanations, I put my
function “hi” in HomeHelper and I call the method with <%= hi %> from my
“home#index”, but give me an error:
superclass must be a Class (Module given)
I have searched in Google a solution or the explanation, but I don’t
find. I am still thinking it might be happening…
Regards, Ivn
On 06/12/2011 01:58 AM, radhames brito wrote:
end
You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Oh, thanks. I understand the code and work with the result that I want.
Thanks again, Radhames.
With this problem I have learned things about the helpers and the way to
work with its and the controllers. Thanks also for the rest of the users
who tried to help me.
Rewards, Ivan