How to encode (.) Dot in url Rails

Hi All,

I am having routes like below to delete/list an user.

map.connect ‘developer/:user_name/delete’,:controller=>“developers”,:action=>“delete”,:method=>:delete

map.connect ‘developer/:user_name/list’,:controller=>“developers”,:action=>“list”,:method=>:get

While listing the user by encoding the Dot with %2E, i can see the success response http://localhost:3000/developer/testuser%2Ehu/list

But While trying to delete the user who containing the Dot(.), throws 404 error.

http://localhost:3000/developer/testuser%2Ehu/delete , thanks in advance

regards,

Loganathan

You have the developer/:user_name/delete route set to use “delete” as the method, rather than “get”

Since browsers usually don’t support sending requests other than post or get, you’ll need to pass a “_method=delete” parameter to that route

Check out the rails guide on routing for more information:

http://guides.rubyonrails.org/routing.html#resources-on-the-web

Also do not pass the user name but the id.

Colin

Hi Tim,

I already tried with the get method too. but no luck.

regards, Loganathan

Hi Colin

That was an api call, so we cannot change the url.

regards, Loganathan

Hi All, I am having routes like below to delete/list an user.

map.connect ‘developer/:user_name/delete’,:controller=>“developers”,:action=>“delete”,:method=>:delete

You probably need to keep the ‘.’ from being treated as a separator (like for a format):

:requirements => { :user_name => /.*/ }

-Rob

constraints (:version => /[0-9]{1}(?:.[0-9]{1,2})/) do

match 'ws/:api_version => ‘api#create’

end

This route will match to 'ws/1.23" and you will have params[:version] == “1.23”

I solved the problem by adding ActionController::Routing::SEPARATORS = %w( / ; , ? ) in my routes.rb file, but an warning message is displaying as below

config/routes.rb:12: warning: already initialized constant SEPARATORS

Want to know whether this warning will be an issue on future?

regards, Loganathan