Rails 4使用子域和自定义路由更新模型

时间:2015-11-16 14:46:38

标签: ruby-on-rails routes subdomain

我无法使用自定义路由(无资源)和一个子域更新一个用户模型。

我的表格是:

<%= 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;。

2 个答案:

答案 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

阅读documentation

答案 1 :(得分:0)

您可以使用内置的resources方法生成路线:

constraints subdomain: "services" do  
  scope module: "services", as: "services" do
    resources :users, only: [:update]
  end
end