使用Rails Destroy方法而不发送http DELETE请求?
对于我Website
模型,我现在让用户的方法消灭该模型的实例是把这个HTML页上:使用Rails Destroy方法而不发送http DELETE请求?
<%= link_to "delete", website, :method => :delete %>
然而,这将有发送DELETE
请求/websites/:id(.:format)
才能使用销毁方法。我不能这样做,因为我的Websites
的id
是字符串,例如http://example.com
,意思是localhost:3000/websites/http://example.com
就没有意义。
所以我想知道的是,除了发送http DELETE
请求之外,是否还有另一种方法可以删除我的Websites
模型的实例?我希望我可以直接访问destroy
方法。
任何帮助,非常感谢。
为什么你没有网站的主键ID作为整数,然后有一个“url”字符串属性,可以是http://example.com
名称。
这将使许多事情变得更容易,特别是关联。此外,您仍然可以根据网址搜索相关内容,而且您并没有真正限制将url设置为列和ID#作为主键。
您可以通过向routes.rb添加新路线来访问公共方法。
例如:
的routes.rb
post '/websites/:id' => 'websites#destroy', :as => :destroy_website
视图
<%= link_to "destroy", destroy_website_path(:id => "http://example.com"), :method => :post %>
这看起来不错;让我试试这个真快 – knygw 2012-08-15 21:53:44
你能解释一些事情吗?什么是“as”?我在我的routes.rb文件中得到这个错误:'undefined local variable or method'destroy_website'' – knygw 2012-08-15 22:02:41
它创建方法:destroy_website_path和destroy_website_url。没有这样的方法destroy_website。 – emrahbasman 2012-08-15 22:56:32
的原因是因为我有一个模型'Simulations'需要被用'Websites'相关联,但它们通过node.js 被添加到我的数据库中,'Websites'和'Simulations'唯一的共同点就是'url'属性。有一个结果,我不得不手动映射外键。 – knygw 2012-08-15 22:19:55
这不应该阻止你使用id作为主键而不是url。如果这是一种一次性使用的应用程序,那么它们并没有什么关系,但如果这很重要,将URL作为主键将在未来应对。 – Solomon 2012-08-16 19:50:58