4

如何使 link_to 指向另一个控制器中的操作,包括参数。我有一系列引用产品 ID 的交易。我正在尝试将每个交易链接到它的产品。

控制器

def page
  @transactions = Transaction.all
end

页面(haml)

- @transactions.each do |x|
  = link_to "Product", {controller: "product", action: "show", id: x.product_id} 

错误

No route matches {:controller=>"product", :action=>"show", :id=>38}

耙路线

product GET    /products/:id(.:format)     products#show
4

1 回答 1

5

您有语法问题:

Product 的控制器是 ProductsController (注意复数),所以你应该将此哈希传递给 link_to:

{controller: "products", action: "show", id: x.product_id}
                     ^

还要确保它x.product_id存在,如果不存在,它将引发错误“没有路由匹配 { ... }”。


编码风格的改进是使用路径助手生成的路径:

link_to "Product", product_path(x.product_id)

这个助手是通过resources :products你的 routes.rb生成的

有关 Url Helpers 的更多信息:http: //guides.rubyonrails.org/routing.html#path-and-url-helpers

于 2013-09-18T13:23:02.157 回答