在我的rails 4应用程序中,我在routes.rb中有一段看起来像这样:
namespace :settings do
resources :profile, only: [:index] do
put :update_user, on: :collection
end
end
控制器位于app/controllers/settings/profile_controller.rb
,如下所示:
class Settings::ProfileController < ApplicationController
def index
end
def update_user
end
end
这导致rake routes
:
PUT update_user_settings_profile_index - &gt; /设置/配置文件/ update_user(:格式)
GET settings_profile_index - &gt; /设置/面(:格式)
我不明白为什么这些路径中包含_index
。我想摆脱它。我可以吗?如果是这样,怎么样?
答案 0 :(得分:3)
我认为这是因为您使用单数名称profile
作为resources
定义,按惯例应该是复数。您可以尝试使用resources :profiles
。
答案 1 :(得分:0)
对我而言,通过路线,向后工作总是更容易,询问我想要的路径是什么?我不确定你想要什么样的路径,但我希望我能在这里给你一些想法。
我假设您需要一个索引路径,因为您明确包含了唯一的:[:index]语句,但您不希望资源上有索引路径。
尝试将您唯一的:[:index]语句移动到外部do循环中进行设置,并仅为您的个人资料添加:[:更新](或您正在寻找的任何操作)
namespace :settings, only: [:index] do
resources :profile, only: [:update] do
put :update_user, on: :collection
end
end
来到这里:
update_user_settings_profile_index PUT /settings/profile/update_user(.:format) settings/profile#update_user
settings_profile PATCH /settings/profile/:id(.:format) settings/profile#update
PUT /settings/profile/:id(.:format) settings/profile#update