I am using Rails 4 with Wicegrid, I want to have a link on each row of the grid to be able to delete a record, I have created the link_to but when I pressed it I get the error: No route matches [DELETE] "/".
I don't want to send it the user to the a delete view, I want to delete the record and refresh the grid and stay in the grid.
My controller looks like:
def destroy
@risk = current_user.risks.find(params[:id])
@risk.destroy
respond_to do |format|
format.html { redirect_to risks_url }
format.json { head :no_content }
end
end
My Index view looks like this:
<%=
grid(@risks_grid) do |g|
g.column name: 'Id', attribute: 'id'
g.column name: 'Title', attribute: 'title' do |p|
p.title if p.title
end
.
g.column do |p|
link_to("Delete", :back, :data => { :confirm => "Are you sure?" }, :action => :destroy, :id => p.id, :method => :delete, :class => 'button-xs')
end
end
%>
Thanks, Leon
Your syntax for link_to
looks a bit off. You're saying that the action is :back
and then specifying specific parts of another action (action
, and id
). I've never used wicegrid but I would think that something like the following would suffice
link_to("Delete", p, data: { confirm: "Are you sure?" }, method: :delete, class: 'button-xs')
If you want to do the deletion via AJAX so that the user doesn't leave the page you'll need to use remote: true
in your data attributes:
link_to("Delete", p, data: { remote: true, confirm: "Are you sure?" }, method: :delete, class: 'button-xs')
Then in your destroy.js.coffee
or destroy.js.erb
you can use jQuery or something similar to make the appropriate updates to the DOM.