Forum: Ruby on Rails change date and numbers format, before_validation()

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D48be99143e13e40d1c44a4da63a53f4?d=identicon&s=25 Mongeta 99 (raimon)
on 2009-03-04 07:56
Hello,

I need to change/adapt of the date and float numbers the user enters:

dd/mm/yyyy I have to change into yyyy-mm-dd

and numbers, replace the , with the .

1245,85 => 1245.85

I thought the best place was using the before_validation() but here the
objects come with standard Rails formats, and the date is wrong, and the
numbers are also wrong.

Now I'm doing all the stuff in the Controller:

 def update

   @transaction=Transaction.find(params[:id])

if @transaction.update_attributes(params[:transaction])

   @transaction.data=convert_european_date(@transaction.data.to_s)
   @transaction.amount = params[:transaction][:amount].to_s.gsub(',',
'.').to_f

end

...


But this is a pain If I have to duplicate code for new and update
controllers method.

So I tried to move the code into the model before_validation but there
the self.data and self.amount are wrong, as Rails adapt them to what
they think it's the standard way ...

In the controller I can get the fresh value from params, but in the
model it doesn't exist ...

what's the best solution to my problem ?

thanks!

r.
80e4cb97cae5c8d745f72337d93fd8f2?d=identicon&s=25 MaD (Guest)
on 2009-03-04 09:10
(Received via mailing list)
since this problem is closely linked to your user's entries, you gotta
solve it in your view or controller. to not repeat yourself too much
you could add a helper-method for that piece of code you are using to
set your records straight.
D48be99143e13e40d1c44a4da63a53f4?d=identicon&s=25 Mongeta 99 (raimon)
on 2009-03-04 09:15
MaD wrote:
> since this problem is closely linked to your user's entries, you gotta
> solve it in your view or controller. to not repeat yourself too much
> you could add a helper-method for that piece of code you are using to
> set your records straight.

yes and no, this problem is the same for lots of users that doesn't
follow the US format number and dates ...

I'm using the helpers for displaying the records, but I can't use them
in the controller, so I created two methods in the Application
Controller, at least it's working but not the way Rails is proposing ...

thanks!

r.
80e4cb97cae5c8d745f72337d93fd8f2?d=identicon&s=25 MaD (Guest)
on 2009-03-04 09:40
(Received via mailing list)
well, helpers are really meant for helping with displaying your data.
thats right. i actually didn't mean to write a helper-method, but a
method (in your controller) to help you with setting your records. my
fault (got lost in translating my thoughts).
i think your aproach of putting it into application-controller is a
good one (as long as you really need that method in more than one
controller).
D48be99143e13e40d1c44a4da63a53f4?d=identicon&s=25 Mongeta 99 (raimon)
on 2009-03-04 09:42
MaD wrote:
> well, helpers are really meant for helping with displaying your data.
> thats right. i actually didn't mean to write a helper-method, but a
> method (in your controller) to help you with setting your records. my
> fault (got lost in translating my thoughts).
> i think your aproach of putting it into application-controller is a
> good one (as long as you really need that method in more than one
> controller).

yes, you're right: helpers are for help no matter where they help ...

:-)

r.
988320371d9a18f0d50375188e01d54a?d=identicon&s=25 Peter Vandenabeele (Guest)
on 2009-03-04 11:43
(Received via mailing list)
On Wed, Mar 4, 2009 at 9:39 AM, MaD <mayer.dominik@gmail.com> wrote:
> well, helpers are really meant for helping with displaying your data.
> thats right. i actually didn't mean to write a helper-method, but a
> method (in your controller) to help you with setting your records. my
> fault (got lost in translating my thoughts).
> i think your aproach of putting it into application-controller is a
> good one (as long as you really need that method in more than one
> controller).

One question I have for some time now is:

What is the idiomatic place in the directory tree for positioning such
"controller_helpers" ?

../app/helpers/ is really for view helpers.

Of course, they could go in

../app/controllers/application.rb

but then, that is inherited by _all_ controllers.

We now put some "controller-helpers" in modules under /lib/
and then include those modules selectively in controllers.

Or should we use sub classes for everything, but I read that is not
the "Rails-way" either.

Would it make sense to have default locations for "controller_helpers".

Maybe something along the lines of:

/app/view_helpers
/app/controller_helpers
/app/helpers --> /app/view_helpers

The concept of

  helper :all  (that we actually use now in
../app/controllers/application.rb)

also seems broken as this is unclean mixing of view and controller
helpers.

How should I do this in a clean fashion ?

Thanks,

Peter
80e4cb97cae5c8d745f72337d93fd8f2?d=identicon&s=25 MaD (Guest)
on 2009-03-04 14:45
(Received via mailing list)
well, you could always create a helper with an arbitrary name and
include them in your controller. that way helpers are all huddled
together in one folder, but that special controller_helper gets only
included in controller that depend on it.
This topic is locked and can not be replied to.