Ruby on rails 为什么rails找不到由助手创建的路由?
我在rails 4中创建了一个:Ruby on rails 为什么rails找不到由助手创建的路由?,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我在rails 4中创建了一个: resources :line_items do post 'decrement', on: :member end 并在line_items controller中为其提供了匹配方法: def decrement @cart = current_cart @line_item = @cart.line_items.find_by_id(params[:id]) @line_item.decrement_quantity
resources :line_items do
post 'decrement', on: :member
end
并在line_items controller中为其提供了匹配方法:
def decrement
@cart = current_cart
@line_item = @cart.line_items.find_by_id(params[:id])
@line_item.decrement_quantity
respond_to do |format|
if @line_item.save
format.html { redirect_to shop_path, notice: 'Line item was successfully updated.' }
format.js {@current_item = @line_item}
format.json { head :ok }
else
format.html { render action: "edit" }
format.js {@current_item = @line_item}
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
end
但当我试着做一个按钮时:
<%= button_to 'X', decrement_line_item_path(item) %>
有什么好处?
resources :line_items do
post 'decrement', on: :member
end
根据CONTROLLER='line\u items'rake routes
,以下是输出
decrement_line_item POST /line_items/:id/decrement(.:format) line_items#decrement
line_items GET /line_items(.:format) line_items#index
POST /line_items(.:format) line_items#create
new_line_item GET /line_items/new(.:format) line_items#new
edit_line_item GET /line_items/:id/edit(.:format) line_items#edit
line_item GET /line_items/:id(.:format) line_items#show
PUT /line_items/:id(.:format) line_items#update
DELETE /line_items/:id(.:format) line_items#destroy
因此,在html按钮部分,需要添加POST
方法
<%= button_to 'X', decrement_line_item_path(item), method: :post %>
您的错误消息是:
No route matches [POST] "/carts/25"
但我希望路线是:/line\u items/25/减量
,而不是/carts/25
您的行\u项目
路线是否已嵌套在购物车
下?如果是这样,可以按如下方式取消启动递减操作:
# in config/routes.rb
resources :carts do
resources :line_items
end
resources :line_items, only: [] do
post 'decrement', on: :member
end
你能为这个控制器粘贴
rake routes
的输出吗?但据我所知,按钮\u to
默认采用post
方法!啊。。。对那是我想不出来的。那一定是路线上的问题。太好了,今天晚些时候我会试一试。该按钮被放入:show
视图的购物车
控制器中(我可能应该在我的问题中提到这一点)。这是否告诉您还有什么问题,或者您的答案是否仍然有效?如果解决方案不起作用,那么如果您发布运行的输出:rake-routes | grep-decrement
,那么我们将对其进行另一次检查(也就是说,发布过滤后的rake-routes的输出,以仅包含包含带有decrement一词的行)
# in config/routes.rb
resources :carts do
resources :line_items
end
resources :line_items, only: [] do
post 'decrement', on: :member
end