Thanks for all helpful replies and additional comments! I will have some more refactoring to do ; ) Finally I now get what this RESTful is about (didn’t play with it earlier). Point about security is taken. Gert On 10 Feb 2014, at 15:18, David Precious <davidp@preshweb.co.uk> wrote:
I'd do what James said - change your template so that the form submits to /edit/:id (e.g. <form action=/edit/42" method="post">), then change your edit route to post '/edit/:id' => sub { ... }
That'll handle it nicely, and is a bit more RESTful, too.
Also, random comments:
In the get route, you load the data straight from a YAML file, but in the post route, you call get_AoH_imagelist() to get it - incomplete refactor, perhaps?
When you say:
my $data = get_AoH_imagelist(); my @data = @{$data}
You could condense that to:
my @data = @{ get_AoH_imagelist() };
On Mon, 10 Feb 2014 14:37:29 +0100 Gert van Oss <gertvanoss@me.com> wrote:
Hi,
I’m trying to build a small app to comment on images. Probably I’m almost there but currently stuck with updating a ‘file.yml' by a html-form.
I’ve made two routes (shown below) “get ‘/:id/edit’ for showing the form with the particular image to comment on. When hitting save the ‘post ‘/edit’ will be called. My problem is that the post route doesn’t have the $id initialised. Is there someone around who can tell me how to solve this or point to me what I’m doing wrong?
Thanks, Gert
The structure is an AoH. The file.yml is like
--- - collection: '' description: good id: 0 imgf: photo.jpg tags: '' - collection: '' description: '' etc..
————end of yaml
#--------------------------------------------------------------------- # # get EDIT # #--------------------------------------------------------------------- get '/:id/edit' => sub { my $filename = Dancer::FileUtils::read_file_content( Dancer::FileUtils::path( setting('appdir'), 'myImages.yml' ) ); my $data = from_yaml $filename; my @data = @{$data};
#print Dumper \@data; my $id = param('id'); template 'edit', { data => $data[$id], id => $id, }; };
#--------------------------------------------------------------------- # # post EDIT # #---------------------------------------------------------------------
post '/edit' => sub { my $data = get_AoH_imagelist(); my @data = @{$data}; my $id = param('id'); $data[$id] { description}= params->{description} ; #$data[2] { description}= params->{description} ; # this works but then all descriptions end up in the third group of hashes. my $filename = "myImages.yml"; write_file $filename, to_yaml($data); redirect '/'; };
-- David Precious ("bigpresh") <davidp@preshweb.co.uk> http://www.preshweb.co.uk/ www.preshweb.co.uk/twitter www.preshweb.co.uk/linkedin www.preshweb.co.uk/facebook www.preshweb.co.uk/cpan www.preshweb.co.uk/github
_______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users