如何使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
答案 0 :(得分:4)
您遇到语法问题:
Product的控制器是ProductsController(注意复数),所以你应该把这个哈希传递给link_to:
{controller: "products", action: "show", id: x.product_id}
^
同时确保x.product_id
存在,否则会引发错误“没有路由匹配{...}”。
您的编码风格的改进将是使用路径助手生成的路线:
link_to "Product", product_path(x.product_id)
此助手已通过routes.rb
中的resources :products
生成
有关Url助手的更多信息:http://guides.rubyonrails.org/routing.html#path-and-url-helpers