How does this rails route match any incoming action to it's correlated method on the controller? -


i have rails route defined this:

match '/test_report(/:action)' => 'test_report#index', via: :all

i not expert on rails routing, using context clues have expected route map request /test_report/some_action or /test_report/other_action index method on testreportcontroller, because of part of route definition after hash rocket: => 'test_report#index'.

however, not behavior. instead, can create method on testreportcontroller called update_report, , can post /test_report/update_report trigger update_report method. route definition i'm using, wouldn't expect work, does. have expected post hit index method on controller.

note: we're clear, understand (/:action) part of route marks optional part of url, , :action symbol special here , interpreted action's name.

tl;dr:

if => 'test_report#index' in above route doesn't map requests index method on controller, do?

as know, whatever parameters define within route pattern become available in params hash in controller.

so in example, :action becomes available within controller params[:action], used internally rails load correct action. (if inspect, you'll see params[:route], params[:controller], params[:action], etc.)

i'm guessing defining own :action in url pattern causes rails prefer on what's in mapping (skipping index in test_report#index).

if want live in both worlds, you'll want name other :action.


Popular posts from this blog

php - How should I create my API for mobile applications (Needs Authentication) -

5 Reasons to Blog Anonymously (and 5 Reasons Not To)

Google AdWords and AdSense - A Dynamic Small Business Marketing Duo