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.


Reply via email to