Hi Sergio,

It worked like a charm. Thanks a lot!

On Mar 25, 2:51 pm, "Sergio Cambra .:: entreCables S.L. ::."
<[email protected]> wrote:
> 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