I know I am missing something.. I don’t know how to fix it.
I have a Message model which has a body attribute.
the controller is located under users/messages_controller.rb
my routes
namespace :users do
resources :messages
end
which give
users_messages GET /users/messages(.:format) users/messages#index
POST /users/messages(.:format) users/messages#create
new_users_message GET /users/messages/new(.:format) users/messages#new
edit_users_message GET /users/messages/:id/edit(.:format) users/messages#edit
users_message GET /users/messages/:id(.:format) users/messages#show
PUT /users/messages/:id(.:format) users/messages#update
DELETE /users/messages/:id(.:format) users/messages#destroy
I created a partial which I render on users/show via
<%= render :partial => 'users/messages/sendme' %>
_sendme.html.erb
<%= form_tag(users_messages_path) do %>
<%= text_area_tag "Message" %>
<%= submit_tag 'Submit' %>
<% end %>
but when I submit a message, and it goes to the create action in messages_controller I can’t pull the id of the user from which the message was sent.
The params that I get are
pry(#<Users::MessagesController>)> params
=> {"utf8"=>"Γ£ף",
"authenticity_token"=>"IrcPBHgBp/BI...mBbOQx7gcJc5xNtAFs=",
"Message"=>"test",
"commit"=>"Submit",
"action"=>"create",
"controller"=>"users/messages"}
The URL of the users/show is http://localhost:3000/users/24
What do I need to add so I can get the user’s ID in the params?
If you have the
@useravailable in your form, create ahidden_field_taginside it like this:Then, when you submit your form, the
params[:id]would be populated as@user.id.