2012-08-15 86 views
0

对于我Website模型,我现在让用户的方法消灭该模型的实例是把这个HTML页上:使用Rails Destroy方法而不发送http DELETE请求?

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

然而,这将有发送DELETE请求/websites/:id(.:format)才能使用销毁方法。我不能这样做,因为我的Websitesid是字符串,例如http://example.com,意思是localhost:3000/websites/http://example.com就没有意义。

所以我想知道的是,除了发送http DELETE请求之外,是否还有另一种方法可以删除我的Websites模型的实例?我希望我可以直接访问destroy方法。

任何帮助,非常感谢。

回答

0

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

这将使许多事情变得更容易,特别是关联。此外,您仍然可以根据网址搜索相关内容,而且您并没有真正限制将url设置为列和ID#作为主键。

+0

的原因是因为我有一个模型'Simulations'需要被用'Websites'相关联,但它们通过node.js 被添加到我的数据库中,'Websites'和'Simulations'唯一的共同点就是'url'属性。有一个结果,我不得不手动映射外键。 – knygw 2012-08-15 22:19:55

+0

这不应该阻止你使用id作为主键而不是url。如果这是一种一次性使用的应用程序,那么它们并没有什么关系,但如果这很重要,将URL作为主键将在未来应对。 – Solomon 2012-08-16 19:50:58

0

我不是很确定明白你的问题,但你看看friendly_id

感谢这个宝石,你将能够创建与字符串,而不是基本的SQL主要ids的网址。

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 %> 
+0

这看起来不错;让我试试这个真快 – knygw 2012-08-15 21:53:44

+0

你能解释一些事情吗?什么是“as”?我在我的routes.rb文件中得到这个错误:'undefined local variable or method'destroy_website'' – knygw 2012-08-15 22:02:41

+0

它创建方法:destroy_website_path和destroy_website_url。没有这样的方法destroy_website。 – emrahbasman 2012-08-15 22:56:32