Hi, I'm learning about routing and trying to solve the problem below.
Using update_scope_path in the view is routing to "users/show" rather
than users/update_scope, with "update_scope" becoming the user id.
( The goal is to change session[:question_scope] to "vip" when the user
clicks the button in the view. I assume I have to go to a controller
action to do that.)
In routes.rb:
resources :users
match '/users/update_scope', :to => 'users#update_scope', :as =>
:update_scope
In users_controller:
def update_scope
session[:question_scope] = "vip"
end
put ‘update_scope’, to: ‘users#update_scope’, as: :update_scope
end
That might work. What I’d honestly consider is making a scope controller and using the update action. If you don’t need the others, then your routes will look like this.
Using update_scope_path in the view is routing to "users/show" rather
than users/update_scope, with "update_scope" becoming the user id.
( The goal is to change session[:question_scope] to "vip" when the user
clicks the button in the view. I assume I have to go to a controller
action to do that.)
Yes.
In routes.rb:
resources :users
The above includes /users/:id, which *matches first* - winning! So
the routing engine won't ever get to your other route.