【问题标题】:Cant create a link to named routes无法创建指向命名路由的链接
【发布时间】:2014-08-01 19:02:30
【问题描述】:

我想创建一个指向命名路由的链接

我的 routes.db 有以下规则

match '/tablero', to: 'tablero#index',via: 'get' , as: 'tablero_main'

我可以使用 rake 路线查看路线

tablero_main GET    /tablero(.:format)            tablero#index

但是当我按如下方式使用 link_to 时,我得到“未定义的局部变量或方法 `tablero_main'”错误。

<%= link_to "Tablero",tablero_main %>

我还有什么遗漏的吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    您需要将path 附加到方法名称中,如下所示:

    <%= link_to "Tablero", tablero_main_path %>
    

    【讨论】:

      【解决方案2】:

      路线

      为了进一步帮助您,您还需要考虑 resources 在您的路线中的作用

      由于 Rails 使用 resourceful routing infrastructure每个 您创建的路由都应该基于资源。在你的情况下:

      #config/routes.rb
      resources :tablero, only: :index #-> domain.com/tablero
      

      诚然,这将为您提供路径 tablero_index_path,而不是 tablero_main_path,但它确保您的路线不仅是 DRY,而且是可扩展的。没有什么比在路由文件中有 100 条“match”路由更糟糕的了。

      --

      帮助者

      之后,记得使用正确的route_path helper:

      每个“路由”路径基本上只是一个辅助方法(为您构建一个 URL)。使用link_to时,需要直接引用path helper。你没有这样做,导致 Rails 返回未定义方法错误

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-14
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 2019-01-30
        相关资源
        最近更新 更多