以前不需要使用rails的“ URL帮助器”,但是我正在尝试实现类似Rails: URL/path with parameters的东西。我没有创建任何“资源”,但给我的印象是,我可以在以下路径中添加url_helper名称:
user_index_path GET 'users/index', to: 'users#index'
但这会导致错误:
undefined method 'GET' for #<ActionDispatch::Routing::Mapper:0x00000007ABCDEF> Did you mean? gets gem
由于我没有太多使用它们,所以我对在这里读到的语句https://blog.arkency.com/all-the-ways-to-generate-routing-paths-in-rails/感到困惑,他说:“当然,有时您需要_url而不是_path”。我定义错误吗?是的,我读了https://guides.rubyonrails.org/routing.html,并看到了有关“ 3.16直接路线”的内容,但这与我所见过的示例并不一致。
答案 0 :(得分:3)
您可以根据需要命名路线
#inside your routes.rb file
get 'users/index', to: 'users#index', as: 'users_index'
(请注意,在大写情况下,在第一个链接上看到的是命令rake routes
的输出,而不是定义它们的行)
该路由将为您提供2条命名路由供使用:users_index_path
和users_index_url
(后者包括协议,主机和端口)。
答案 1 :(得分:0)
我必须承认官方的Rails路由文档非常简洁。简而言之,您不能在 routes.rb 文件中添加路径。您的行应改为:
get 'users/index', to: 'users#index'
如果您现在访问 http://localhost:3000/rails/info/routes 或在项目文件夹的命令提示符下键入 rails route ,您将看到这为您提供了 users_index_path < / strong>助手(注意复数)。如果您希望单数形式(如您的原始问题一样),请添加“ as”选项:
get 'users/index', to: 'users#index', as: 'user_index'
然后,您可以在视图模板中使用 user_index_path 。
答案 2 :(得分:0)
您定义的路线错误。
尝试这样的事情:
const $ = require('jquery')
然后您将获得这样的帮助者:get 'users/index' => "users#index", as: :users
您是否将控制器操作与路由混淆?没有人将路线定义为“索引”。这只是假设。
您真正想要的是这样的东西:
users_path
然后,您可以使用resources :users, :controller => "users", :only => [:index]
来获取用户集合。
它的作用:
users_path
位。答案 3 :(得分:0)
我认为最简单,最常规的做法是:
get :users, to: 'users#index'
为您提供:
users GET /users(.:format) users#index
,然后将其用作users_path
。
(如果您想走resources
路径,那么:
resources :users, only: [:index]
哪个还会给您:
users GET /users(.:format) users#index
拥有user_index_path
是不寻常的,因为users_path
暗含UsersController
的索引动作。