I am working on a Rails 4 app using Devise 3.1.1 for user authentication. When I click on /users/sign_up.user link Rails throws following exception:
ActionCo
I did not want to change default links produced by Devise which appended ".user" at the end of each link. Devise produced following links:
new_user_registration_path(resource_name) new_user_session_path(resource_name) new_user_password_path(resource_name)
resource_name, which is user, as parameter to the path in link_to method which tells it to use ".user" as format. So I just removed resource_name from each path. I wonder why Devise does this though!
When you say you click on the /users/sign_up.user
link, do you literally mean that exact path? Because the .user
on the end is telling it to try and respond with a user
format, akin to pdf
, xml
, or json
. Remove that and see what happens.
I've just resolved this problem also.
The solution is to revert all paths to Devise
default ones, meaning to say no _user
infix.
Note that we are not able to test in console these code:
user = User.all.sample
app.new_registration_path(user)
because Devise use its helper to transform the url automatically internally so we cannot test from outside.
@zeeshan's answer works, you can also the functions without the _user infix:
new_registration_path(resource_name)
new_session_path(resource_name)
new_password_path(resource_name)