[dancer-users] updating a form

Gert van Oss gertvanoss at me.com
Mon Feb 10 14:44:44 GMT 2014


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 at 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 at 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 at 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 at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users



More information about the dancer-users mailing list