调用一个'link_to'的自定义控制器动作方法

问题描述:

我正在使用Ruby on Rails 3,我想在我的控制器文件中声明一个动作方法,以便在我的视图文件中我可以使用类似如下的东西:调用一个'link_to'的自定义控制器动作方法

link_to("Delete", posts_path(@post.id), :method => :delete) 

也就是说,有一个链接,以便我可以“直接”调用并在我的控制器中运行一个操作方法。

在上面的代码中,例如,可以调用destroy方法添加:method => :delete

+2

你不应该这样做。视图被控制器调用,而不是相反。做你打算打破你的应用程序的MVC性,并在视图内创建一个依赖控制器。你可以用一些奇特的线路来完成这个任务,但我不知道那将会是什么样子。 – 2011-03-25 17:17:14

+0

这个问题对我来说毫无意义。正在描述的内容正是mvc。请详细说明。 – mark 2011-03-25 17:51:48

+1

这是完美的MVC。为什么它不是MVC,MVC的做法是什么? – freedrull 2011-05-17 17:00:38

你可以试试这个。它适用于我的情况。

<%= link_to(t(:delete), :action => 'destroy', :method => :delete, :id => @post.id) %> 

我会通过你的意见周密坚持,但语法是:

<%= link_to "Delete", {:action => 'delete', :id => @post.id} %> 

变化posts_pathpost_path

<%= link_to 'Destroy', post_path(post), :confirm => 'Are you sure?', :method => :delete %> 

,或者甚至更好,

<%= link_to 'Destroy', post, :confirm => 'Are you sure?', :method => :delete %> 

此外,要链接到其他操作,请为其添加路线, 例如resources :posts, :member => [:mycustomaction]并在你看来<%= link_to("foobar", mycustomaction_post_path(post) %>

+0

对不起,我以前错误的答案... Rails3正确处理link_to在这里做一个POST,当你使用restful路线和rails.js。使用'button_to'来兼容性可能还有一些好处 – 2011-03-25 18:42:09