1

我需要在我的视图中有一个按钮,单击它应该从我的数据库表中删除项目并使用更新的数据库内容刷新视图。下面是我的 index.html.erb 文件中的代码

   <div id="table-record">
<div class="table-order-detail" id="position1">
<div class="table-inner-border">
<% if @orders%>
<div class="bottom-border1"><%= "Table"+@orders.first.tableno %>
</div>
<div class="bottom-border1">
<div class="item-name">Item</div> <div class="qty">Qty</div>
</div>
<% @orders.each do |order| %>
<% if (order.itmstatus == "displayed") %>
<div class="item-name"><%= order.itemname %></div>
<div class="qty"><%= order.quantity %></div>
<% else %>
<div class="new-item-name"><%= order.itemname %></div>
<div class="qty"><%= order.quantity %></div>

<% end %>
<% end %>
<% end %>
<% button_to "Done", {:action => "doneorder", :id => @orders.first.tableno, :controller => "kitchens"}, :method => :delete %> 
</div></div>

@orders.first.tableno 是我需要从我的数据库表中删除行的键(不确定我是否需要在 id 字段中传递它,但我在其中一个相关帖子中找到了这种语法)

下面是我的控制器(厨房)中的代码。控制器最初只定义了索引方法。现在我添加了另一个方法 doneorder,我需要在单击按钮时调用它。

def doneorder

        List.where(:tableno => params[:id])).delete_all
        redirect_to :action => :index

  end

在上述方法中,我需要删除与从按钮单击传递的 id 对应的行,然后重定向到索引操作。索引操作将从列表表中获取更新的行并显示更新的内容。

我完全是 Rails 的初学者,我已经尝试了很多来自相关帖子的东西,包括 link_to,但似乎没有任何效果。使用上面的代码,我得到以下错误

No route matches {:action=>"doneoreder", :id=>"01", :controller=>"kitchens"}

在我的路线文件中,我给出了

resources :kitchens do
  put :done_order, on: :member
end

请帮忙。谢谢。

4

2 回答 2

1

在路线中

   resources :kitchens do 
    delete :doneorder 
  end

在视野中

<%= button_to "Done", { :controller => "kitchens", :action => "doneorder", :id => @orders.first.tableno}, :method => :delete %>

<button type="submit" id="1">请删除此 html 代码,不再需要

于 2013-08-30T04:56:44.230 回答
0

你的路线有done_order,但你的行动是doneorder

所以要么改变你的路线或动作名称。

编辑:您也不需要将 button_to 包含在按钮标签中。

您还需要添加:method => :put您的 button_to 调用。我希望您没有遵循 rajarshi 回答中的路线更改。如果你这样做了,把它改回,put而不是delete

于 2013-08-30T04:53:10.207 回答