model view controller - Trying to Delete Message from List with Rails -


so have simple list of messages users can submit. i'm trying put delete button (that works) each message. can see here error entirely different action if click button. i'm not totally sure went wrong. guess i'm out of depth in controller area. here applicable files.

routes.rb:

rails.application.routes.draw  root 'messages#index', as: :home  '/new' => 'messages#new', as: :edit  resources :messages  post '/new' => 'messages#create', as: :create  delete 'messages/:id' => 'messages#destroy', as: :delete  

the relevant controller:

class messagescontroller < applicationcontroller     def index         @messages=message.all     end     def new         @messages=message.new     end     def destroy         @messages=message.find(params[:id])         @messages.destroy     end     def create         @messages = message.new(message_params)              if @messages.save              redirect_to '/'                  else              render 'new'              end     end     private     def message_params         params.require(:message).permit(:content, :subject)     end  end 

the relevant view:

<div class="main">     <div="messages">         <%@messages.each |t|%>         <h2 class="subject"><%=t.subject%></h2>         <p class="content"><%=t.content%></p>         <%=link_to "delete message", delete_path(t)%>         <% end %>         <%=link_to "create message", edit_path%>     </div> </div> 

you need pass method delete well, otherwise perform get request. here's how:

<%=link_to "delete message", delete_path(t), :method => 'delete' %> 

remember if not mention method in link_to, default taken get. have explicit other http methods.

edit:

either use resources :messages, or use routes wrote yourself. using resources :messages bit easier, , preferred way.

using resources :messages, you'd have write:

<%= link_to "delete message", t, :method => 'delete' %> 

edit 2:

you getting error template missing, because in destroy method, neither rendering anything, nor redirect_toing anything. after destroy object, have tell should go. if want user go messages page after he/she destroys record, need add following line end of method:

redirect_to messages_path  

Comments

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -