【发布时间】:2016-04-05 13:31:05
【问题描述】:
我的看法
<h1>Return a Book</h1>
<%= form_tag("/orders/returnB", method: "get") do %>
<div class="form-group">
<%= label_tag :ID, "ID" %>
<%= text_field_tag :ID, nil, class: "form-control" %>
</div>
<%= submit_tag "Submit", class: "btn btn-default" %>
<% end %>
我的控制器
def returnB
getid = params[:ID]
@order = Order.find(getid)
@order.destroy
respond_to do |format|
format.html { redirect_to orders_url, notice: 'Order was destroyed.' }
format.json { head :no_content }
end
end
它只是直接进入控制器,因为我的控制器无法获取 id,所以它给出了一个错误。所以我在我的路线上这样做:
get 'orders/return' => 'orders#returnB'
【问题讨论】:
-
“直接进入控制器”是什么意思?一切都首先进入控制器。你打的是什么网址?你的路由是什么样的?我也强烈考虑坚持正常的参数命名约定。并正确缩进。
-
那是因为您已将其路由到控制器的
returnB方法。 Rails 总是会首先点击控制器。您也不应该使用获取请求来销毁订单。您能解释一下您要实现的功能吗?您想显示视图,然后用户填写表单并在提交时销毁订单? -
鉴于您提到方法::get 并在控制器中执行一些销毁操作
-
然后给出一个错误 id not found?
-
是的,因为我从视图中获取了 ID,然后我找到了具有该 ID 的订单,然后将其销毁。
标签: ruby-on-rails ruby ruby-on-rails-3.2