Why can't I use a param called "action"?

because action, controller are prohibited words.

Look around debug params

--- !map:ActiveSupport::HashWithIndifferentAccess 
action: index
controller: main

so you can't use those params. Because they will be REWRITED AUTOMATICALLY


I would suggest NOT using words like action, name, method as field names as they are all attributes of the form tag and are likely to get confused when the form is posted


I agree with jbeynon, I would also say anything that has to do with CRUD(Create, Read, Update, Delete) is protected also.