В ваших маршрутах вы должны написать:
resources :users do
post :send_message, :on => :member
end
И, по вашему мнению, вы напишите:
= link_to "Send Message", send_message_user_path(@user)
Это будет использовать id
вместо user_id
.Так что в вашем контроллере вам также нужно использовать params[:id]
.
Имхо, это чище, чем решение @ fl00r, потому что это метод-член, а не коллекция.
Но янемного смущен тем, почему у вас вообще будет этот метод внутри контроллера.Потому что единственное, что он делает, это перенаправляет на send_message_path
в любом случае.Все переменные экземпляра будут потеряны.Поэтому вместо этого, на ваш взгляд, напишите это:
= link_to 'Send message', send_message_path(:user_id => @user.id)
И это сразу отправит вас к правильному контроллеру (где вам придется искать пользователя).
Также ваш show
методМожно использовать некоторую работу: вы должны определить has_many :posts
в вашей User
модели.