Ajax

On my edit page I can update values using ajax.

In my edit action I also have something like: Model.where(model_id:
id).sum(“attribute”)
As the edit action is not executed anymore, I dont get a proper result
after I add some new value, have to reload the page.

How is the best way to actualize the sum after edit… ?

Thanks

On Mon, Nov 19, 2012 at 10:25 PM, Werner
[email protected]wrote:

On my edit page I can update values using ajax.

In my edit action I also have something like: Model.where(model_id:
id).sum(“attribute”)
As the edit action is not executed anymore, I dont get a proper result
after I add some new value, have to reload the page.

How is the best way to actualize the sum after edit… ?

Are you updating the values by calling $.ajax or just passing in remote:
true on your forms?

If you use $.ajax, I suggest that you pass in the sum as json which
$.ajax
can process. If you’re
using remote: true, you can create an update.js.erb or update.js.haml
which
will be rendered
after you update.

To view this discussion on the web visit
https://groups.google.com/d/msg/rubyonrails-talk/-/RHAW38e5gOwJ.
For more options, visit https://groups.google.com/groups/opt_out.

Hi jim

As I am using remote: true I created a update.js.erb and a respond_to do
|format| block.
Copied the format html ocde into the update.js.erb and the update
process
is still working… so far so good.

But it is unclear to me how to update the
Model.where(model_id: id).sum(“attribute”) query which is in edit
action.

Using html, after update the edit action is called and the query is
refreshed. How to get this working with js?
Something like a submit or refreshing the edit action…?

Thanks for sharing…

Am Montag, 19. November 2012 15:30:42 UTC+1 schrieb jim:

Hi!

On Tue, Nov 20, 2012 at 4:53 PM, Werner
[email protected]wrote:

Hi jim

As I am using remote: true I created a update.js.erb and a respond_to do
|format| block.
Copied the format html ocde into the update.js.erb and the update process
is still working… so far so good.

But it is unclear to me how to update the
Model.where(model_id: id).sum(“attribute”) query which is in edit action.

Can you paste in part of the edit template where you use the result of
this
query?

Using html, after update the edit action is called and the query is
refreshed. How to get this working with js?
Something like a submit or refreshing the edit action…?

Can you also paste your edit and update actions so we can work on the
code
level.

Thanks for sharing…

Are you updating the values by calling $.ajax or just passing in remote:

Thanks

msg/rubyonrails-talk/-/**RHAW38e5gOwJhttps://groups.google.com/d/msg/rubyonrails-talk/-/RHAW38e5gOwJ

-------------------------------------------------------------

For more options, visit https://groups.google.com/groups/opt_out.

Sure…

def edit
@booking = Booking.new
@project = Project.find(params[:id])
@main_hours = main_hours_sum(@project.id)

end

def main_hours_sum(id)
Booking.where(project_id: id).sum(“hour”)
end

def update
respond_to do |format|

  format.js
  end

end

update.js.erb
<% if params[:booking_ids] %>
<% params[:booking_ids].each do %>
<% Booking.update(params[:booking].keys,
params[:booking].values).reject { |p| p.errors.empty? } %>
<% end %>

<%end%>

Am Dienstag, 20. November 2012 09:59:58 UTC+1 schrieb jim:

On Tue, Nov 20, 2012 at 5:46 PM, Werner
[email protected]wrote:

Booking.where(project_id: id).sum("hour")

<% if params[:booking_ids] %>
<% params[:booking_ids].each do %>
<% Booking.update(params[:booking].keys,
params[:booking].values).reject { |p| p.errors.empty? } %>
<% end %>

<%end%>

You need to move the logic in update.js.erb to the update action. I was
looking for
the edit template. I’d like to see how you use the @main_hours
variable.
What I’m thinking
is this on this update action and erb.

def update
@project = … #fetch project here

move your logic in the view here

there’s something missing here :smiley:

if params[:booking_ids]
params[:booking_ids].each do
Booking.update(params[:booking].keys,
params[:booking].values).reject
{ |p| p.errors.empty? }
end
end

respond_to do |format|
format.html
format.js { @main_hours = main_hours_sum(@project.id) }
end
end

update.js.erb

use @main_hours to update whatever you need to update on the view

alert(‘<%= @main_hours %>’)

Model.where(model_id: id).sum(“attribute”) query which is in edit

For more options, visit
https://groups.google.com/**grou**ps/opt_outhttps://groups.google.com/groups/opt_out

For more options, visit
https://groups.google.com/**groups/opt_outhttps://groups.google.com/groups/opt_out

o.k.
Now it is like that:

def update
if params[:booking_ids]
params[:booking_ids].each do
Booking.update(params[:booking].keys,
params[:booking].values).reject
{ |p| p.errors.empty? }
end
end

respond_to do |format|
  format.js{
    @project = Project.find(params[:id])
    @main_hours =  main_hours_sum(@project.id)
  }
  end
end

def main_hours_sum(id)
hours ||= Booking.where(project_id: id).sum(“hour”)
end

update.js.erb
alert(’<%= @main_hours %>’)

The alert pops up and shows the correct amount of hours…
Thanks so far…but I dont have an idea how to update/reset the
@main_hours on the edit page where it is shown. As I dont leave this
page,
no request - no update.
May be my understanding of this process is not enough yet.

Greetings

Am Dienstag, 20. November 2012 11:04:53 UTC+1 schrieb jim:

On Tue, Nov 20, 2012 at 7:48 PM, Werner
[email protected]wrote:

end

def main_hours_sum(id)
@main_hours on the edit page where it is shown. As I dont leave this page,
no request - no update.
May be my understanding of this process is not enough yet.

If you can show us the code of your edit template, I can help you with
the
javascript
to update the total number of hours.

On Tue, Nov 20, 2012 at 5:46 PM, Werner <webagent…@googlemail.**com>wrote:

def main_hours_sum(id)
update.js.erb
looking for
params[:booking_ids].each do

As I am using remote: true I created a update.js.erb and a respond_to
this query?

As the edit action is not executed anymore, I dont get a proper
using remote: true, you can create an update.js.erb or update.js.haml
Groups “Ruby on Rails: Talk” group.


.

.

here…is the essential

def edit
@booking = Booking.new

@project = Project.find(params[:id])
@partprojects = Project.find_all_by_parent_id(@project.id)

@bookings = Booking.zwischen(start, ende)

@main_hours = main_hours_sum(@project.id)
@part_hours = part_hours_sum(@partprojects.id)
@all_hours =  @main_hours + @part_hours

end

form
<%= simple_form_for @booking, :url => booking_path, :remote => true,
:method => :put do %>
<% @bookings.each do |booking|%>

        <%= fields_for "booking[]", booking do |f|%>
         <%= f.text_field :hour, :class => 'submittable' %>
         <%= hidden_field_tag "booking_ids[]", booking.id %>
         <% end %>

<% end %>

coffee
$(“.submittable”).live “change”, →
$(this).parents(“form:first”).submit()

def update
if params[:booking_ids]
params[:booking_ids].each do
Booking.update(params[:booking].keys,
params[:booking].values).reject { |p| p.errors.empty? }
end
end

respond_to do |format|
  format.js{
    @project = Project.find(params[:id])
    @main_hours =  main_hours_sum(@project.id)

  }
  end

end

Am 20.11.2012 um 13:22 schrieb Jim Ruther N. [email protected]:

  params[:booking_ids].each do
  end


@project = Project.find(params[:id])

<%end%>
if params[:booking_ids]

But it is unclear to me how to update the

On Mon, Nov 19, 2012 at 10:25 PM, Werner [email protected] wrote:
using remote: true, you can create an update.js.erb or update.js.haml which will
be rendered
To unsubscribe from this group, send email to
[email protected].
visit my blog at http://jimlabs.heroku.com

To view this discussion on the web visit
https://groups.google.com/d/msg/rubyonrails-talk/-/aGQY2mvKhoUJ.

Werner L.
[email protected]

Am 20.11.2012 um 13:55 schrieb Jim Ruther N. [email protected]:

I try to explain…

I have this edit form where I can edit hours
On top of the insert form itself I give Information about the complete
amount of hours.

So I ask for the complete amount of hours by asking for the part / main
project and add them .

When I edit hours in the form… I want of course not only update the
house by form-field, but also actualize the all-together hours. (sum the
table)

Normally this is done by the submit request parsing the edit action.
But now with editing the hour fields with js, this is not happening …

Hope this gets more clear now.

@partprojects = Project.find_all_by_parent_id(@project.id)

<% @bookings.each do |booking|%>
$(this).parents(“form:first”).submit()
respond_to do |format|

end

def main_hours_sum(id)
May be my understanding of this process is not enough yet.

end
end
the edit template. I’d like to see how you use the @main_hours variable. What
I’m thinking
end

Hi!
Can you paste in part of the edit template where you use the result of this
query?

In my edit action I also have something like: Model.where(model_id:
id).sum(“attribute”)

For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google G. “Ruby
on Rails: Talk” group.

To post to this group, send email to [email protected].

Werner L.

To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Werner L.
[email protected]

On Tue, Nov 20, 2012 at 8:45 PM, Werner L. <
[email protected]> wrote:

@main_hours = main_hours_sum(@project.id)
         <%= f.text_field :hour, :class => 'submittable' %>

    @project = Project.find(params[:id])
    @main_hours =  main_hours_sum(@project.id)

  }
  end

end

Ok. sorry but now I’m confused. Where are you using @main_hours,
@part_hours and @all_hours?
I need the part of the template that uses these variables.

params[:booking].values).reject { |p| p.errors.empty? }
end
The alert pops up and shows the correct amount of hours…

On Tue, Nov 20, 2012 at 5:46 PM, Werner <webagent…@googlemail.**com>wrote:

def main_hours_sum(id)
update.js.erb
looking for
params[:booking_ids].each do

As I am using remote: true I created a update.js.erb and a respond_to
this query?

As the edit action is not executed anymore, I dont get a proper
using remote: true, you can create an update.js.erb or
You received this message because you are subscribed to the Google
For more options, visit https://groups.google.com/**grou****
visit my blog at http://jimlabs.heroku.com
.
-------------------------------------------------------------

msg/rubyonrails-talk/-/**aGQY2mvKhoUJhttps://groups.google.com/d/msg/rubyonrails-talk/-/aGQY2mvKhoUJ


To view this discussion on the web visit


To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Am 20.11.2012 um 14:19 schrieb Jim Ruther N. [email protected]:

$(‘#main-hours span’).text(‘<%= @main_hours %>’);

perfect… thanks a lot…
Now I get the idea…

Werner L.
[email protected]

On Tue, Nov 20, 2012 at 9:10 PM, Werner L. <
[email protected]> wrote:

project and add them .

When I edit hours in the form… I want of course not only update the
house by form-field, but also actualize the all-together hours. (sum the
table)

Normally this is done by the submit request parsing the edit action.
But now with editing the hour fields with js, this is not happening …

Hope this gets more clear now.

Ok. It’s clearer now but you still need to show the html code above the
form where you use
@main_hours, @part_hours and @all_hours. If you some sort of code
before
your form like
this one

Main Hours <%= @main_hours %>

you can add this line in update.js.erb to update the main hours

$(‘#main-hours span’).text(‘<%= @main_hours %>’);

Good luck!

here…is the essential
@part_hours = part_hours_sum(@partprojects.id)
<%= hidden_field_tag “booking_ids[]”, booking.id %>
def update
@main_hours = main_hours_sum(@project.id)

params[:booking].values).reject { |p| p.errors.empty? }
end
The alert pops up and shows the correct amount of hours…

On Tue, Nov 20, 2012 at 5:46 PM, Werner <webagent…@googlemail.**com>wrote:

def main_hours_sum(id)
update.js.erb
was looking for
params[:booking_ids].each do

Can you paste in part of the edit template where you use the result
level.

Am Montag, 19. November 2012 15:30:42 UTC+1 schrieb jim:

Model.where(model_id: id).sum(“attribute”)
$.ajax can process. If you’re

.
***-
https://groups.google.com/d/**ms**g/rubyonrails-talk/-/**GktAGfGYQ

googlegroups.com.

To unsubscribe from this group, send email to

For more options, visit https://groups.google.com/groups/opt_out.

[email protected].

You received this message because you are subscribed to the Google G.
“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 https://groups.google.com/groups/opt_out.

yes. thanks a lot…

The one more thing…

I try to complete that

respond_to do |format|
  format.js{
    @project = Project.find(params[:id])
    @main_hours =  main_hours_sum(@project.id)
    @part_hours = part_hours_sum(@partprojects)
    @all_hours =  @main_hours + @part_hours
  }
  end

$(‘#main-hours span’).text(‘<%= @main_hours %>’);
$(‘#all-hours span’).text(‘<%= @all_hours %>’);

<%= @main_hours %> h
<%= @all_hours %> h

But then noting is working… mhhh…

Am 20.11.2012 um 14:37 schrieb Jim Ruther N. [email protected]:

Now I get the idea…

Werner L.
[email protected]

On Tue, Nov 20, 2012 at 9:31 PM, Werner L. <
[email protected]> wrote:

Am 20.11.2012 um 14:19 schrieb Jim Ruther N. [email protected]:

$(‘#main-hours span’).text(‘<%= @main_hours %>’);

perfect… thanks a lot…
Now I get the idea…

Cheers! At least we nail that one :slight_smile:

To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.