使用Rails Destroy方法而不发送http DELETE请求?

时间:2012-08-15 20:38:48

标签: ruby-on-rails

对于我的Website模型,我当前允许用户销毁该模型实例的方法是将其放在html页面上:

<%= link_to "delete", website, :method => :delete %>

但是,这必须向DELETE发送/websites/:id(.:format)请求才能使用destroy方法。我不能这样做是因为id的{​​{1}}是Websites之类的字符串,意味着http://example.com只是没有意义。

所以我想知道的是,除了发送http localhost:3000/websites/http://example.com请求之外,还有另一种删除Websites模型实例的方法吗?我希望我可以直接访问DELETE方法。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

为什么不将网站的主键ID作为整数,然后有一个“url”字符串属性,可以是http://example.com名称。

这将使许多事情变得更容易,特别是协会。此外,您仍然可以根据网址搜索内容,并且您不必将网址设为列并将ID#作为主键。

答案 1 :(得分:0)

我不是很确定你能理解你的问题,但是你看看friendly_id了吗?

感谢这个gem,你将能够用字符串而不是基本的sql primary id创建url。

答案 2 :(得分:0)

您可以通过向routes.rb添加新路由来访问公共方法。

例如:

的routes.rb

post '/websites/:id' => 'websites#destroy', :as => :destroy_website

视图

<%= link_to "destroy", destroy_website_path(:id => "http://example.com"), :method => :post %>