Dancer-Plugin-SimpleCRUD icon indicating copy to clipboard operation
Dancer-Plugin-SimpleCRUD copied to clipboard

/table/add form confusing with labels and foreign keys

Open joshrabinowitz opened this issue 8 years ago • 2 comments

If I have a two tables and a simple_crud interface like:

create table things ( id int, name varchar, category_id int);
create table categories ( id int, name varchar, );

simple_crud(
 prefix=> '/things',
 db_table=>'things',
 foreign_keys => { strategy_id => { table=>'categories', key_column=>'id', label_column=>'name' }},
 labels => { category_id=>"Category" },
);

Then when viewing the /things/add form , then for the 'category_id' field of the things table will show an input labelled 'category' even though you have to enter a 'category_id'.

In some cases this is correct (when there's only one row in the categories table, then it seems like it'll show a checkbox for that category), but if asking for a category id this is misleading.

joshrabinowitz avatar Sep 07 '16 21:09 joshrabinowitz

Is this still valid?

Testing the example app, which uses foreign_keys for the employer_id column, it displays the name as employer_id, and gives me the available employer records to select from.

bigpresh avatar May 21 '17 22:05 bigpresh

I see what this is about. I've worked up a branch to illustrate this:

https://github.com/joshrabinowitz/SimpleCRUDTest/compare/foreign-key-labels-gh-75?expand=1

The issue is if you have interfaces like this:

simple_crud(
    record_title=>'thing',
    prefix=> '/things',
    db_table=>'things',
    foreign_keys => { category_id => { table=>'categories', key_column=>'id', label_column=>'name' }},
    labels => { category_id=>"Category" },
);
simple_crud(
    record_title=>'category',
    prefix=> '/categories',
    db_table=>'categories',
);

and you have two tables like this, but with no data:

create table things ( id int PRIMARY KEY AUTO_INCREMENT, name varchar(255), category_id int);
create table categories ( id int PRIMARY KEY AUTO_INCREMENT, name varchar(255) );

Then when you go the /things/add form, there will be two text boxes present, one for the "name' and one for the 'category' (instead of the radiobuttons to chose one of the categories - which here don't exist).

I guess the right thing is to give the user an error message that there are no 'category' records to refer the foreign_key to?

joshrabinowitz avatar May 23 '17 22:05 joshrabinowitz