ruby-on-rails - 如何为rails在link_to中添加:id?
问题描述
我的目标是为卖家(用户)在他们的用户的销售页面(他们的销售历史页面)中创建一种方式将文件上传给买家(买家)。顺便说一句,我正在使用 Devise 作为用户角色。
我有链接,例如,我有 URL“ localhost:3000/orders/28/sales_uploads/new ”工作,所以我可以上传到特定的销售。
虽然,在用户/卖家的销售页面中,我希望他们能够将文件上传给买家(买家购买产品,卖家然后在购买后上传文件 - 每个产品/购买都是定制的),或者通过最好是销售页面,或者通过单击链接-这是我遇到问题的地方。我希望卖家单击“上传”链接,然后将他们定向到页面以上传订单文件。
在销售页面视图(views/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 搜索、Stack 搜索等有帮助。
解决方案
您正在寻找的正确代码是:
<% @orders.each do |order| %>
<%= link_to "Upload", new_order_sales_upload_path(order) %>
<% end %>
如果您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 中路由的信息
推荐阅读
- hibernate - Hibernate @Filter 无法使用 FetchType.LAZY 处理 Child
- php - PHP CURL 问题 | 标头上下文类型未发送
- java - MapStruct 子实体
- javascript - 无法 POST 到 Express 路由器(404 错误)
- r - 用 ggplot2 绘制 Shapefile
- javascript - 通过断点而不是多个 else if 语句查找索引
- php - iOS 静默远程推送通知不起作用:没有用户可见的内容
- javascript - 按下 HTML 按钮 - 使用 Javascript 检查状态(单击时不触发)
- javascript - 我似乎无法从扩展程序运行我的功能
- node.js - Fluent-FFmpeg 错误:ffprobe 以代码 1 退出