[Ror-es] Ajax + render :update
Esteban
Mon Feb 5 17:23:32 GMT 2007
- Previous message: [Ror-es] Ajax + render :update
- Next message: [Ror-es] Ruby on Rails en Espana?
-
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Xavier Noria wrote:
>
>Por lo tanto a priori sin :update deberia funcionar. Podrias por
>favor enviar algo de codigo?
>
>-- fxn
>
>
Xavier,
Te paso mi código a ver si encuentras algo raro, te paso la variante con
platilla RJS en comentario viene para usar sin RJS. Uso backgroundRB
para iniciar una tarea de larga duración pero eso funciona bien. Te
agradezco cualquier ayuda que me puedas brindar.
*En el Controlador*
# dibuja el form
def daily bonus
end
# la acción que llama el submit del form
def daily_bonus_start
if request.xml_http_request? then
args = {:time => Abstract.sysdate, :userid => params[:userid]}
session[:daily_points_job_key] = MiddleMan.new_worker(
:class => :daily_points_worker,
:args => args) unless session[:daily_points_job_key]
else
redirect_to :action => :menu
end
end
# def daily_bonus_start
# if request.xml_http_request? then
# args = {:time => Abstract.sysdate, :userid => params[:userid]}
# session[:daily_points_job_key] = MiddleMan.new_worker(
# :class => :daily_points_worker,
# :args => args) unless session[:daily_points_job_key]
# render :update do |page|
# page.show 'progress'
# page.replace_html 'progress_percent', '0%'
# page<<(periodically_call_remote(:url => {:action =>
'daily_bonus_progress'}, :frequency => 2))
# end
# else
# redirect_to :action => :menu
# end
# end
# esta acción es la asociada al periodically_call_remote
def daily_bonus_progress
if request.xml_http_request? then
if session[:daily_points_job_key] then
progress =
MiddleMan.get_worker(session[:daily_points_job_key]).progress
progress_max =
MiddleMan.get_worker(session[:daily_points_job_key]).progress_max
progress_percent = (100 * progress / progress_max).to_i
render :update do |page|
page.call('progressPercent', 'progress_percent', progress_percent)
page.redirect_to(:action => 'daily_bonus_done') if
progress_percent >= 100
end
else
render :nothing => true
end
else
redirect_to :action => :menu
end
end
# al llegar al 100% se llama esta acción
def daily_bonus_done
session[:daily_points_job_key] = nil
flash[:message] = 'Daily Bonus calculation finished successfully'
redirect_to :action => :menu
end
*En la vista*
daily_bonus_start.rjs
page.show 'progress'
page.replace_html 'progress_percent', '0%'
page<<(periodically_call_remote(:url => {:action =>
'daily_bonus_progress'}, :frequency => 2))
daily_bonus.rhtml
<%= form_remote_tag :url => {:action => :daily_bonus_start} %>
<%= hidden_field_tag 'token', session.session_id %>
<%= submit_tag "Proceed", :disabled => if == :running then
:disabled else nil end %>
<%= end_form_tag %>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.simplelogica.net/pipermail/ror-es/attachments/20070205/72431c5c/attachment.htm
- Previous message: [Ror-es] Ajax + render :update
- Next message: [Ror-es] Ruby on Rails en Espana?
-
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]