Restful URLs fail to generate when id is not numeric

I’m trying to work with an existing Oracle schema which of course does
not follow the Rails conventions for table/column names or primary key
types. I used Scaffold to get everything going. I got the table name and
the column names set up and I can retrieve the records correctly.
However I cannot get the RESTful URLs to work, for Show or Edit. I
nailed it down to the issue with the identifier not being numeric. When
I update the primary key column - which is VARCHAR2(32) - to contain
integers then all URL issues disappear and I am able to Show, Edit and
Update. But when I fall back the original values I get “XXX_url failed
to generate…” errors. Any ideas how to get around this?
Tom

Tomasz R. wrote:

I’m trying to work with an existing Oracle schema which of course does
not follow the Rails conventions for table/column names or primary key
types. I used Scaffold to get everything going. I got the table name and
the column names set up and I can retrieve the records correctly.
However I cannot get the RESTful URLs to work, for Show or Edit. I
nailed it down to the issue with the identifier not being numeric. When
I update the primary key column - which is VARCHAR2(32) - to contain
integers then all URL issues disappear and I am able to Show, Edit and
Update. But when I fall back the original values I get “XXX_url failed
to generate…” errors. Any ideas how to get around this?
Tom

Is it possible that you’re existing primary key values will need to be
URL escaped in order to produce valid URLs? Do they contain spaces or
other special characters that are not permitted in URLs?

On Fri, Aug 6, 2010 at 10:52 AM, Tomasz R.
[email protected] wrote:

I’m trying to work with an existing Oracle schema which of course does
not follow the Rails conventions for table/column names or primary key
types. I used Scaffold to get everything going. I got the table name and
the column names set up and I can retrieve the records correctly.
However I cannot get the RESTful URLs to work, for Show or Edit. I
nailed it down to the issue with the identifier not being numeric. When
I update the primary key column - which is VARCHAR2(32) - to contain
integers then all URL issues disappear and I am able to Show, Edit and
Update. But when I fall back the original values I get “XXX_url failed
to generate…” errors.

Without any code, it’s hard to say. However, I have a legacy DB I’m
working with that has an alphanumeric primary key, where the model
includes:

set_primary_key “product” # e.g. “E70211A”

and this link generates an appropriate path:

<%= link_to product.product_name, product_path(product.product) %>

HTH,

Hassan S. ------------------------ [email protected]
twitter: @hassan

Is it possible that you’re existing primary key values will need to be
URL escaped in order to produce valid URLs? Do they contain spaces or
other special characters that are not permitted in URLs?

Yup! Thanks! That’s what it was! I had a few entries formatted like:
XXX.DEFAULT.USER.834029834092830

I changed the primary key and it worked. Will figure out later how to
handle it long-term.

Robert W. wrote:

Tomasz R. wrote:

I’m trying to work with an existing Oracle schema which of course does
not follow the Rails conventions for table/column names or primary key
types. I used Scaffold to get everything going. I got the table name and
the column names set up and I can retrieve the records correctly.
However I cannot get the RESTful URLs to work, for Show or Edit. I
nailed it down to the issue with the identifier not being numeric. When
I update the primary key column - which is VARCHAR2(32) - to contain
integers then all URL issues disappear and I am able to Show, Edit and
Update. But when I fall back the original values I get “XXX_url failed
to generate…” errors. Any ideas how to get around this?
Tom

Is it possible that you’re existing primary key values will need to be
URL escaped in order to produce valid URLs? Do they contain spaces or
other special characters that are not permitted in URLs?

BTW for those that follow my posts, I’m actually not completely daft on
the use of your vs. you’re, and its vs. it’s. I guess my fingers are
when typing into this forum though. Grrr. I drive myself nuts with that
sometimes. hehe.