Reputation: 47
I have passed an argument to the controller action. But when loading the page it shows wrong arguments error. And also I need to configure my routes so that it will become users/id/requests instead of user/requests. Because of that I need to pass an user argument.
<% if signed_in? %>
<li><%= link_to "Requests", requestuser_path(current_user) %></li>
usercontroller:
def requestuser(user)
@title = "Requests"
@users = user.followed_users.paginate(page: params[:page])
end
routes.rb
resources :users do
member do
get :following, :followers
end
end
resources :sessions, only: [:new, :create, :destroy]
resources :requests, only: [:create]
match '/request', to: 'users#requestuser', via: [:get, :post], as: :requestuser
Upvotes: 0
Views: 68
Reputation: 218
But when loading the page it shows wrong arguments error.
https://guides.rubyonrails.org/action_controller_overview.html#parameters
You aren't supposed to pass any arguments to Controller methods. In this case you should get user through params:
# users_controller.rb
def show
@user = User.find(params[:id])
@title = "Requests"
@users = @user.followed_users.paginate(page: params[:page])
end
And also I need to configure my routes so that it will become users/id/requests instead of user/requests.
https://guides.rubyonrails.org/routing.html#adding-member-routes
# routes.rb
resources :users do
member do
get :following, :followers, :requests
end
end
# users_controller.rb
def requests
@user = User.find(params[:id])
# whatever requests are
# @user.requests
end
This is what link should look like in view:
<%= link_to "Requests", user_requests_path(current_user) %>
Upvotes: 1