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 Nill <jvn...@gmail.com>: > > > > On Tue, Nov 20, 2012 at 7:48 PM, Werner <webagentur.la...@googlemail.com> > wrote: > 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. > > 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. > > > Greetings > > > > Am Dienstag, 20. November 2012 11:04:53 UTC+1 schrieb jim: > > > > On Tue, Nov 20, 2012 at 5:46 PM, Werner <webagent...@googlemail.com> wrote: > 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%> > > 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 :D > 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 %>') > > > > > > > > Am Dienstag, 20. November 2012 09:59:58 UTC+1 schrieb jim: > > Hi! > > On Tue, Nov 20, 2012 at 4:53 PM, Werner <webagent...@googlemail.com> 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.. > > > > > > Am Montag, 19. November 2012 15:30:42 UTC+1 schrieb jim: > > > > On Mon, Nov 19, 2012 at 10:25 PM, Werner <webagent...@googlemail.com> 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. > > > Thanks > > > > -- > 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 rubyonra...@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-ta...@googlegroups.com. > > 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. > > > > > > -- > ------------------------------------------------------------- > visit my blog at http://jimlabs.heroku.com > > -- > 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 rubyonra...@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-ta...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-talk/-/GktAGfGYQm4J. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -- > ------------------------------------------------------------- > visit my blog at http://jimlabs.heroku.com > > -- > 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 rubyonra...@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-ta...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-talk/-/aGQY2mvKhoUJ. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -- > ------------------------------------------------------------- > visit my blog at http://jimlabs.heroku.com > > -- > 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 rubyonrails-talk@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-talk/-/Uww8jzoTzJcJ. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > -- > ------------------------------------------------------------- > visit my blog at http://jimlabs.heroku.com > > -- > 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 rubyonrails-talk@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > Werner Laude webagentur.la...@gmail.com -- 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 rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.