[英]How to add :id in link_to for rails?
我的目标是为卖方(用户)在其“用户”的“销售”页面(其销售历史页面)中将文件上传到买方(“买方”)提供一种方法。 我正在将Devise用于用户角色。
我有链接,例如,我的URL“ localhost:3000 / orders / 28 / sales_uploads / new ”可以正常工作,因此我可以上传到特定的销售商品。
虽然,我希望他们能够在用户/卖方的“销售”页面上将文件上传到买方(买方购买产品,卖方然后在购买后上传文件-每个产品/购买都是自定义的),无论是通过销售页面,最好还是单击链接-这就是我遇到的问题。 我希望卖方单击链接“上传”,然后将其定向到页面以上传订单文件。
在“销售”页面视图((视图/ sales_uploads / sales))中,我有
<%= link_to "Upload", new_order_sales_upload_path(@order, order) %>
但我收到一个错误,即没有order_id。
我该怎么做,以便链接链接到带有订单ID的订单。
我有一个
<% @orders.each do |order| %>
所以它循环,我不知道为什么它不起作用。
这是我的github https://github.com/brandnamewater/digitalcommerce
正如您在上述视图中所看到的,我正在骑自行车。 我假设我在其他地方有问题,可能是在控制器中。 不过,我根本无法弄清楚。
以防万一,最好是我链接整个应用程序,因为可能还有其他我不知道的问题导致了这个问题。
我现在只是定期编码几个星期,我敢肯定这对你们中的一些人来说是非常基础的,但是我无法弄清楚。 我已经尝试了2个晚上,但是其他Google搜索,堆栈搜索等都没有帮助。
好吧,我把订单弄混了
它是 :
<%= link_to "Upload", new_order_sales_upload_path(@order, order) %>
并且应该是:
<%= link_to "Upload", new_order_sales_upload_path(order ,@order) %>
您要查找的正确代码是:
<% @orders.each do |order| %> <%= link_to "Upload", new_order_sales_upload_path(order) %> <% end %>
如果您运行bin/rails routes | grep new_order_sales_upload
bin/rails routes | grep new_order_sales_upload
在您的终端中,它将提供一些输出,向我们显示路线帮助器方法以及需要传递到路线帮助器中的所有参数。
对于您的情况,它将输出
new_order_sales_upload GET /orders/:order_id/sales_uploads/new(.:format) sales_uploads#new
这向我们显示了路由帮助程序,称为new_order_sales_upload
,它需要一个参数:order_id
。
如果要在视图中输出@order
类的<%= @order.inspect %>
您会发现它为nil
因为未设置此实例变量。
您的循环@orders.each
设置了一个名为order
的变量。
您的答案<%= link_to "Upload", new_order_sales_upload_path(order, @order) %>
起作用的原因是,路由助手仅使用第一个变量order
,而第二个@order
为nil
而不被使用。
您可以从官方指南https://guides.rubyonrails.org/routing.html阅读有关Rails中布线的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.