rod mclaughlinHow to add a Delete Confirmation Dialog in Merb (15 dec 08)
In Rails, adding a confirmation dialog ('Are you sure?') to a link which deletes something is easy: <%= link_to 'delete', delete_user_path, :confirm => 'Are you sure?', but in Merb, it's much harder... david-burger.blogspot.com/2008/11/merb-javascript-delete-linkto-with.html is the best explanation I could find... It's written in Merb-speak: 'Just add a class to your link and then hook in your events with some prototype' This means... write the following in eg. show.html.erb: <%= link_to 'Delete', url(:delete_article, @article), :class => 'delete-link' %> and above that, somewhere,
<script type="text/javascript">
$(document).observe("dom:loaded", function(evt) {
$$(".delete-link").invoke("observe", "click", function(evt) {
evt.stop();
if (confirm("Are you sure?")) {
var href = evt.element().href;
var href = href.substring(0, href.length - "/delete".length);
var form = new Element("form", {action: href, method: "POST"});
var _method = new Element("input",
{type: "hidden", name: "_method", value: "DELETE"});
form.appendChild(_method);
$(document).body.appendChild(form);
form.submit();
}
});
});
</script>
and create a destroy method in a controller For example, my articles controller has def destroy(id)
Another example: in Merb it's <%= text_area :body, :cols => "70", :rows => "30" %> and in Rails it's <%= f.text_area :message, {:size => "70x30"} %>
Back
|