如何在link_to中添加:id以实现Rails?

时间:2018-09-23 02:45:54

标签: ruby-on-rails ruby

我的目标是为卖方(用户)在其用户销售页面(其销售历史页面)中将文件上传至买方(买方)提供一种方法。我正在将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搜索,堆栈搜索等都没有帮助。

2 个答案:

答案 0 :(得分:0)

好吧,我把订单弄混了

是:

<%= link_to "Upload", new_order_sales_upload_path(@order, order) %>

并且应该是:

 <%= link_to "Upload", new_order_sales_upload_path(order ,@order) %>

答案 1 :(得分:0)

您要查找的正确代码是:

<% @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,而第二个变量@ordernil而没有使用。 / p>

您可以从官方指南https://guides.rubyonrails.org/routing.html

中了解有关滑轨布线的更多信息。