我无法使用自定义路由(无资源)和一个子域更新一个用户模型。
我的表格是:
<%= form_for :user, :url => services_users_update_url(@user), :html => { :method => 'put', :multipart => true } do |f| %>
而我的子域名是&#34; services&#34;。
我的路线档案:
constraints :subdomain => "services" do
scope :module => "services", :as => "services" do
match '/users/update/' => 'users#update', via: [:put]
end
end
当我显示表单页面时,我表单中生成的网址是:
http://services.website.dev:3000/8296/users/update
当我确认我的表单时,错误消息是:
No route matches [PUT] "/8296/users/update"
我的路线出了什么问题?
如果我尝试:
match '/users/:id' => 'users#update', via: [:put]
表单也会生成路由错误。
我也尝试过:
match '/users/update/:id' => 'users#update', via: [:put]
没有成功。
编辑:我想添加更多信息。我的表单页面位于子域&#39; cloud&#39;我的更新操作位于子域&#39; services&#39;。
答案 0 :(得分:1)
根据你的网址:
http://services.website.dev:3000/8296/users/update
^^^^/^^^^/^^^^^
:id/users/update
您的路线应为:
constraints :subdomain => "services" do
scope :module => "services", :as => "services" do
put ':id/users/update' => 'users#update', as: :services_users_update
end
end
答案 1 :(得分:0)
您可以使用内置的resources
方法生成路线:
constraints subdomain: "services" do
scope module: "services", as: "services" do
resources :users, only: [:update]
end
end