【问题标题】:Named non-resourceful routes create url methods that are accessible ActiveRecord instance命名的非资源路由创建可访问 ActiveRecord 实例的 url 方法
【发布时间】:2015-05-05 18:15:01
【问题描述】:

这是我config/routes.rb的一部分

require 'resque/server'

Rails.application.routes.draw do

  get 'tools/index',  as: :tools

  get 'search/index', as: :search

  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)
  authenticate :admin_user do
    mount Resque::Server.new, at: '/admin/jobs'
  end

  # ...
end

我刚刚了解到由命名的非资源路由生成的 URL 方法,在这种情况下,tools_pathtools_urlfeed_pathfeed_url 被所有 ActiveRecord 对象注入/访问。在 Rails 控制台中如下所示:

> user = User.first
...
> user.feed_path
=> "/feed"
> user.feed_url
=> "http://my-app.dev/feed"
> user.search_path
=> "/search/index"
> user.search_url
=> "http://my-app.dev/search/index"

我在 Ruby 2.0.0p598 上使用 Rails 4.2.1。我不知道这是否值得一提,最初该应用程序位于 Rails 4.1.x 中。我无法在新的 Rails 4.2.1 应用程序上重现它。所以绝对不是 Rails 错误。如何调试这个?

【问题讨论】:

  • 什么在 Rails 4.2.1 中不起作用?
  • 这里有什么问题?
  • 问题是user对象不应该有那些方法。

标签: ruby-on-rails activerecord ruby-on-rails-4.2


【解决方案1】:

事实证明,我在 Rails 控制台中尝试的 ActiveRecord 模型使用的问题包括 Rails.application.routes.url_helpers。咦?!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    相关资源
    最近更新 更多