【问题标题】:Ruby on Rails add path in link_to?Ruby on Rails 在link_to 中添加路径?
【发布时间】:2012-02-06 04:24:22
【问题描述】:

我有这个:

      <li><%= link_to "More", feed_products_path(product.id) ,{:class=>"button-small white"} %></li>

此链接输出: http://localhost:3000/feed_products.34

我想看看是否为: http://localhost:3000/feed_products/34

如何在 Ruby on Rails 中执行此操作?

谢谢!

【问题讨论】:

  • 你也可以发布你的路线文件吗?
  • 我刚刚做了资源:feed_products

标签: ruby-on-rails ruby


【解决方案1】:

将以上链接中的路径替换为

 feed_product_path(product)

feed_products_path 用于索引操作。如果你将一个对象传递给它,那么它会显示为 format("format" => "1"),1 是传递的对象的 id,在 params 哈希中。

我希望你不要试图在那里传递一个对象。让我知道这是否有帮助。

【讨论】:

  • 可能是 feed_product_path(@product) 取决于控制器。
  • 是的,可能是 :) 但 OP 成功地将其作为本地变量而不是实例变量访问。
  • 是的,这行得通。谢谢。我确实有一些后续问题:你为什么这么说? “我希望你不要试图在那里传递物体。如果这有帮助,请告诉我。”以及传递产品和@product Ruby / Ruby on Rails 新手之间的区别。
  • feed_products_path 被路由到 FeedProducts 控制器的索引操作。通常,在索引操作中访问所有相应的对象。因此,将特定对象(同一类)传递给索引操作是没有意义的。让我们考虑一个显示动作 feed_product_path(product),它需要传递一个对象,即指定要显示哪个特定对象。
  • '@product' 是一个实例变量。如果您在操作中定义它,您可以在相应的视图中访问它(否则为局部变量)。在索引操作中说“@products”和“@products.each do |product|”在你看来。 S0,实例变量中的“@products”和您的视图中的“产品”是局部变量。它的范围仅在该视图中,即您需要将其传递给部分或助手。最后,(呜呜)说“让我知道这是否有帮助”,我只是想表现出礼貌和乐于助人:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多