在ROR中实现button_to

时间:2013-08-30 04:34:41

标签: ruby-on-rails ruby-on-rails-3

我需要在我的视图中有一个按钮,点击它应该从我的数据库表中删除项目并使用更新的数据库内容刷新视图。下面是我的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字段中传递它,但我在相关帖子中找到了这个语法)< / p>

以下是我的控制器(厨房)中的代码。控制器最初只定义了索引方法。现在我添加了另一个方法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

请帮忙。感谢。

2 个答案:

答案 0 :(得分: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代码

答案 1 :(得分:0)

您的路线done_order,但您的行为是doneorder

所以要么改变路线或行动名称。

编辑:您也不需要将button_to括在按钮标记中。

您还需要在button_to调用中添加:method => :put。我希望你没有按照rajarshi的回答改变路线。如果您这样做,请将其更改回put而不是delete