gpt4 book ai didi

ruby-on-rails - Rails 没有路由匹配 PUT,但 rake 路由显示它存在

转载 作者:数据小太阳 更新时间:2023-10-29 08:07:25 24 4
gpt4 key购买 nike

我正在尝试实现一个页面,我可以在其中向购物车中的产品添加数量。这方面有什么好的教程吗?

因此,我尝试使用 form_for 实现典型的 edit 表单,但这一直给我这样的错误...

<%= form_for(@cart[0]) do |f| %>
<% if @cart.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@cart.errors.count, "error") %> prohibited this cart from being saved:</h2>

<ul>
<% @cart.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>

<div class="actions">
<%= f.submit %>
</div>
<% end %>

错误:

No route matches {:action=>"show", :controller=>"carts", :id=>nil} missing required keys: [:id]

...请记住这是在 edit 操作中,所以我不知道为什么它会提示 show 操作。无论如何,我制作了 id: false 并将我的主键自定义为 cart_id

index.html文件中我自定义参数

<td><%= link_to 'Edit', edit_cart_path(cart, :id => cart.cart_id, :product_id => cart.product_id) %></td>

这就是我在 Controller 操作中的内容

  def edit
@cart = Cart.where(:cart_id => params[:id], :product_id => params[:product_id])
end

我已经确认它找到了正确的记录。

所以,我说搞定所有这些,并决定只制作一个 form_tag,然后将数量作为参数发送到 update 操作。像下面的edit.html

<%= form_tag('/carts', method: 'put') do %>
<%= number_field_tag "Quantity" %>
<% end %>

但是当有...时它会提示没有放置路径

    cart GET    /carts/:id(.:format)         carts#show
PATCH /carts/:id(.:format) carts#update
PUT /carts/:id(.:format) carts#update

我想这个错误是因为我没有 :id 所以我决定像下面这样覆盖 put 操作

  resources :carts, :except => 'put' do
# put :carts
put "/carts" => "carts#update"
end

但我得到了同样的找不到放置路径错误。

有什么想法吗?

最佳答案

这两条路线:

PATCH  /carts/:id(.:format)         carts#update
PUT /carts/:id(.:format) carts#update

需要一个ID。该 ID 将是您要更新的购物车的 ID。像 cart_path(@cart.id) 这样的东西可以或者如果你想使用那个字符串,你需要传递给它 id "/carts/#{@cart.id}"

关于ruby-on-rails - Rails 没有路由匹配 PUT,但 rake 路由显示它存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36237195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com