rails:使用params将link_to链接到另一个控制器

时间:2013-09-17 21:12:38

标签: ruby-on-rails ruby

如何使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

1 个答案:

答案 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