2013-08-29 106 views
0

我需要调用Button上的方法单击我的视图。下面是我的看法代码:调用自定义控制器方法

<button type="submit" id="1"><%link_to "Done", {:controller => :summary, :action => :done_order}, {:method => :put }%></button> 

这个按钮的点击,我不得不删除表中的一行,并更新与更新内容的视图。下面是我的控制器的done_order方法

def done_order 

     List.where(:tableno => @orders.first.tableno).delete_all 
     redirect_to :action => :index 

    end 

当我点击按钮,我需要从名单“删除表中的所有行(一个特定表号),并重定向到索引,这将再次获取从列表行表中的@orders并传递它来查看填充。 在路由文件中,我定义为:put "summary/done_order"

问题是它没有执行任何操作。我已经尝试了很多推荐的方法,但是每次都遇到一些错误。如果没有错误,则不会执行任何操作。 我相信在我的理解中存在一些缺陷来实现这一点,我错过了尝试其他方式的东西。请指教。谢谢。

+0

您的routes.rb中是否有为done_order操作添加的自定义路由? – usha

+0

是的。我已经在路由文件中添加了“summary/done_order”。 – Gaurav

回答

0

你应该设置为这个路线:

# routes 
resources summaries do 
    put :done_order, on: :member 
end 

这应该允许写的是这样的:

= link_to "Done", done_order_summaries_path(@summary), method: :put 

我不知道你叫你的对象,但它似乎你没有遵循惯例。所以这部分取决于你,但这是基本机制。另一个需要注意的是,你已经把一个链接放在一个按钮标签中。我不确定这甚至是有效的。你没有必要那样做。只需将链接样式设置为按钮或使用按钮,或者使用表单按钮即可。