On Jueves, 25 de Marzo de 2010 12:45:23 Pedro G. escribió:
> Hi Sergio
>
> I think that I understand what you mean, I guess though that my
> question was not very clear. Let me explain what I would (ideally)
> like to do:
> 1) When a given field A changes, I invoke a rails helper method
> passing the record information with all the filled fields so far (say
> A and B)
> 2) In that helper I carry out a series of calculations involving
> several fields of the record, not just the changed column (say C =
> A*B)
> 3) I use the number_to_currency helper method to format the result
> 4) The value of the calculated field is rendered back in the form
>
> Is that possible? I understand I can render the values of the form
> through javascript/AJAX, but in that case I need to format the result
> "by hand", as opposed to using number_to_currency helper method, which
> automatically takes into account my localization setup.

It's possible, but update_column method only sends the current changed column, 
not the whole form, so you will have to include the whole form in AJAX 
request.

You can copy javascript_for_update_column method in your helper file, and 
change :with to "Form.serialize(this.form)"

In after_render_field method you can use:
update_record_from_params(record, active_scaffold_config.update.columns, 
params[:record])

I think it should work

>
> Thanks in advance for your patience
> Pedro
>
> On Mar 22, 9:50 am, "Sergio Cambra .:: entreCables S.L. ::."
>
> <[email protected]> wrote:
> > On Viernes, 19 de Marzo de 2010 21:45:00 Pedro G. escribió:
> > > Thanks a lot, Sergio
> > >
> > > I'm almost there, the problem is that I'm still facing is the
> > > following one: I want to update the net_amount column in my model
> > > whenever the amount column or the vat column changes in the following
> > > way: net_amount = amount * (1.0 + vat/100.0). The amount column is
> > > formatted in the form as a currency.
> > >
> > > To this purpose I overrode render_field.js.rjs as you said (with minor
> > > modifications):
> > >
> > > page <<render(:super)
> > > net_amount_id =
> > > active_scaffold_input_options(active_scaffold_config.columns[:net_amoun
> > >t], params[:scope])[:id]
> > > amount_id =
> > > active_scaffold_input_options(active_scaffold_config.columns[:amount],
> > > params[:scope])[:id]
> > > vat_id =
> > > active_scaffold_input_options(active_scaffold_config.columns[:vat],
> > > params[:scope])[:id]
> > > page << "$('#{net_amount_id}').value =
> > > $F('#{amount_id}').gsub(',','.').gsub('€','') * (1.0 + $F('#{vat_id}')/
> > > 100.0)" + ' €'"
> > >
> > > I can't use @record.amount since this can be called when the vat
> > > column is modified, and then I don't have that value. The gsubs in the
> > > last line are hideous, but that gets rid of the separator and the
> > > currency symbol in amount (please let me know if you can think of a
> > > more elegant way of doing this)
> > >
> > > The problem is that I can't figure out how to display back that value
> > > in the form as a currency (in Spanish format, that is 1,23 €) in a
> > > similar fashion to what number_to_currency would display.
> >
> > If you don't need to change HTML, it would be better to use only JS
> > without AJAX request, without using update_column. Make a JS function and
> > bind onchange event of those fields using JS or setting onchange in
> > config.columns[:column_name].options.
> >
> > > On Mar 19, 10:30 am, "Sergio Cambra .:: entreCables S.L. ::."
> > >
> > > <[email protected]> wrote:
> > > > On Viernes, 19 de Marzo de 2010 01:13:30 Pedro G. escribió:
> > > > > Hi,
> > > > >
> > > > > I have the following situation that I've been unable to solve
> > > > > succesfully: in one of the columns of my controller I have defined
> > > > > the following
> > > > >     config.columns[:units].options = {:update_column => :amount}
> > > > >
> > > > > Basically I want to update the value of the amount column based on
> > > > > the values of the units column plus another column of the record.
> > > > > However, in the after_render_field(record, column) method I don't
> > > > > have access to other fields in record apart from units.
> > > > >
> > > > > ¿Is there any way to overcome this?
> > > > > Thanks in advance
> > > > > Pedro
> > > >
> > > > If you want to use the value in the form, you can override
> > > > render_field.js.rjs in your controller views directory as:
> > > >
> > > > page <<render(:super)
> > > > amount_id = active_scaffold_input_options(:amount,
> > > > params[:scope])[:id] field_id = active_scaffold_input_options(column,
> > > > params[:scope])[:id] page << "$('#{amount_id}').value =
> > > > $F('#{field_id}') +
> > > > '[email protected]}'
> > > >
> > > > --
> > > > Sergio Cambra .:: entreCables S.L. ::.
> > > > Mariana Pineda 23, 50.018 Zaragoza
> > > > T) 902 021 404 F) 976 52 98 07 E) [email protected]
> >
> > --
> > Sergio Cambra .:: entreCables S.L. ::.
> > Mariana Pineda 23, 50.018 Zaragoza
> > T) 902 021 404 F) 976 52 98 07 E) [email protected]

-- 
Sergio Cambra .:: entreCables S.L. ::.
Mariana Pineda 23, 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) [email protected]

-- 
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails plugin" 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 this group at 
http://groups.google.com/group/activescaffold?hl=en.

Reply via email to