How to get around a reserved word

I need to use the model name ‘Action’ (which will not work in Rails
4.0.3) for business reasons (it’s a product name). If I name the actual
model something else, is there any way to (maybe with mod_rewrite) make
the URL appear the way I need it to while keeping everything working in

I’ve tried using the controller flag in routes.rb to try to fix this,
and it seems to work, but causes a lot of problems elsewhere –
basically anything where I use the automatic URLs, like

link_to ‘Link text’, @instance_var

needs to be rewritten to use the long-hand route helper, like this

link_to ‘Link text’, action_path(@instance_var)

What am I missing here?

Thanks in advance,


Namespace it? Product::Action for the model, and
product_action_path(@instance_var) in the routes.

On Wednesday, March 5, 2014 7:02:34 AM UTC, Walter Lee D. wrote:

    link_to 'Link text', @instance_var

resources :foos, :as => :action ?


On Mar 5, 2014, at 6:40 AM, Frederick C. wrote:

resources :foos, :as => :action ?

Thanks, I tried that first, and couldn’t get the forms to work. What did
work was this (although it’s quite a hack, routes-wise):

resources :fw_actions :as => :action
resources :fw_actions

The second line was required in order to support POST and PUT and
DELETE, so I may go through these and put :only => [:post, :put,
:delete] on the latter, and :without on the former.

I couldn’t find any way to have form_for work in the absence of that
duplicate set of routes.


On Wed, Mar 5, 2014 at 9:32 PM, Walter Lee D. [email protected]

Thanks, I tried that first, and couldn’t get the forms to work. What did
duplicate set of routes.

You can remove the second line. In order for form_for to work, you need
manually set
the url instead of just form_for @instance_var. I’ve tested this out
the following routes

resources :pages, as: :foo

which gave the following routes

foo_index GET /pages(.:format) pages#index
POST /pages(.:format) pages#create
new_foo GET /pages/new(.:format) pages#new
edit_foo GET /pages/:id/edit(.:format) pages#edit
foo GET /pages/:id(.:format) pages#show
PATCH /pages/:id(.:format) pages#update
PUT /pages/:id(.:format) pages#update
DELETE /pages/:id(.:format) pages#destroy

Try the following for your forms

new action

form_for @instance_var, url: foo_index_path, html: { method: :post }


form_for @instance_var, url: foo_path(@instance_var), html: { method:
:put }

an email to [email protected].
email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit

For more options, visit