【问题标题】:link_to syntax in Rails 4 for nested resourcesRails 4 中用于嵌套资源的 link_to 语法
【发布时间】:2014-02-17 11:13:47
【问题描述】:

我真的不明白如何链接到 Rails 中的另一个视图。

我在 /products/index.html.erb 中加载数据并希望从一个产品中检索产品 ID 以指向另一个视图:subjects/index.html.erb

将这个 url 与 link_to 一起使用的正确语法是什么:'/products/9/subjects'(对于产品 id 9)?

非常感谢!

【问题讨论】:

    标签: ruby-on-rails nested-resources


    【解决方案1】:
    link_to "Click", subjects_product_path(9)
    

    如果您使用 rake 路由,它会告诉您哪些路由可用,您需要嵌套资源才能使其工作

    resources :products do
      resources :subjects
    end
    

    【讨论】:

      【解决方案2】:

      如果您定义了嵌套路由,因为您的问题看起来是这样的:

      <%= link_to "Click", [@product, :subjects] %>
      

      【讨论】:

      • 好的,找到了解决方案,我用 p 替换了@product,因为我在循环中:@products.each do |p| and now works !!! 非常感谢
      【解决方案3】:

      在你的情况下:

      <%= link_to "The name of your link", product_subjects_path(9) %>
      

      其中 9 是您的产品的 ID。您可以使用更通用的链接,例如:

      <%= link_to "The name of your link", product_subjects_path(@product) %>
      

      在产品的展示视图中,甚至:

      <h2>Links to subjects for each product </h2>
      
      <% @products.each do |product| %>
          <%= link_to product.title, product_subjects_path(product) %>
      <% end %>
      

      在索引中。

      假设在您的路线中,您有嵌套在产品下的主题:

      resources :products do
        resources :subjects
      end
      

      当你迷路时不要忘记:

      bundle exec rake routes
      

      会给你所有现有的路线。

      这里是关于嵌套路由的 Rails 指南:doc

      这里是路径语法的文档:doc

      【讨论】:

      • 返回错误 [@product, :subjects] 工作我们是新手真的很难理解!为什么我们在这种语法中使用 [@product, :subjects] ??
      • 假设你正在使用@products.each 做|p|你能试试 这是我通常在我的应用程序中使用的语法,我会检查另一种表示法
      • 这里是路径和 url 的文档,您会找到带有帮助程序的链接的简短版本(在您的情况下为 [p, :subjects]):link。这只是编写link_to的一种更短的方式。
      【解决方案4】:

      要查看 Rails 应用程序中的所有路线,只需使用以下命令:

      rake routes
      

      它将列出所有路由以及路由变量和它们指向的控制器/动作。从那里您获取路线的名称并在 roder 中附加一个 _path 或 _url(如果您需要绝对 url)以获得在 link_to 中使用的方法的名称。

      在您的情况下,/products/9/subjects 路径的 link_to 是:

      link_to 'Link text', product_subjects_path(@product)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2011-07-09
        • 2018-05-02
        • 1970-01-01
        相关资源
        最近更新 更多