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 <[email protected]>:
>
>
>
> On Tue, Nov 20, 2012 at 7:48 PM, Werner <[email protected]>
> 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 <[email protected]> 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 <[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..
>
>
>
>
>
> Am Montag, 19. November 2012 15:30:42 UTC+1 schrieb jim:
>
>
>
> 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.
>
>
> 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
>
> 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
Werner Laude
[email protected]
--
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 https://groups.google.com/groups/opt_out.