2009-05-03 65 views
0

在Rails中使用restful资源时,我希望能够将链接插入到我的Flash哈希中,用户可以单击该链接销毁相关对象。唯一的问题似乎是我无法使生成的链接与RESTful控制器一起工作!使用HTTP动词在控制器中生成链接

首先我想

link_to "Change your reservation", reservation_path(@existing_reservation), :method => :delete 

这并不起作用,因为的link_to是一个的ActionView helper方法,在控制器

下一个发现是url_for

url_for :controller => 'reservations', :actions => 'destroy', :method => :delete 

这花了我不可用回到演出行动。我试过了我能找到的两个组合。 。 。但我似乎无法在我的控制器中创建一个链接,该链接将在删除方法中滑入!我生成的每个操作都会生成一个正常链接(GET),它调用show方法。

任何想法?

回答

1

ApplicationController.helpers.link_to将允许您使用辅助方法的控制器,虽然我不知道这是严格按照MVC。尽管偶尔我发现了一个需要,即拨打number_to_currency

当您在该特定帮助程序中使用:delete选项时会出现另一个问题。它会失败。快速浏览源代码后,我无法真正看到立即修复。首先,如果可能的话,我建议你将删除链接放在该页面的其他地方。如果你真的需要,你可以在视图中修改flash。

I.e.在控制器设置闪光灯:

flash[:notice] = "Flash message with a DELETE LINK in it" 

然后在视图中修改Flash显示它之前:

<%= flash[:notice].gsub(/DELETE LINK/, link_to("delete", resource_path, :method => :delete)) %> 

你可能会想只是使到自己的帮手。如果你不喜欢gsub-ing这样的文字,我相信你可以找到另一种方式,如何将链接追加到闪光灯?

希望对您有所帮助:)

0

而不是使用路径,尝试仅传递对象本身,例如,

link_to "Change your reservation", @existing_reservation, :method => :delete 
+0

无法在控制器中使用“link_to”方法。 。 。其唯一的意见。 – BushyMark 2009-05-03 11:42:06

+0

是的,你说得对。对不起,我没有仔细阅读你的消息。由于没有对视图中的链接进行硬编码,所以我非常难以理解这一点。 – Schrockwell 2009-05-03 16:28:37