2015-11-16 2 views
0

Я не могу обновить одну пользовательскую модель с помощью моего настраиваемого маршрута (без ресурсов) и одного поддомена.Модель обновления Rails 4 с субдоменом и настраиваемым маршрутом

Моя форма:

<%= form_for :user, :url => services_users_update_url(@user), :html => { :method => 'put', :multipart => true } do |f| %> 

в то время как мой субдомен "услуги".

Мои маршруты файл:

constraints :subdomain => "services" do 
    scope :module => "services", :as => "services" do 
    match '/users/update/' => 'users#update', via: [:put] 
    end 
end 

Когда я показываю свою форму страницы, URL-адрес генерируется в моей форме:

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] 

без успеха.

EDIT: Я хочу добавить дополнительную информацию.

Моя страница формы находится в субдомене 'cloud', и мое действие по обновлению расположено в subdomain 'services'.

ответ

1

По вашему URL:

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 

Read documentation

+0

Если я изменил ваши предложения, форма не может быть отображена: undefined method 'services_users_update_url '. Дело в том, что я не знаю, почему user_id находится в первом в созданном URL. –

+0

@muqaddar проверить обновленный ответ. –

+0

не уверен в 'as:' options, он должен быть 'as:: services_users_update' или' as:: users_update' –

0

Вы можете использовать встроенный в resources метод для создания маршрута:

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

Почему бы и нет. Проблема заключается в том, что моя форма находится в облачном облачном субдомене, и мое действие по обновлению расположено в субдоменах «службы». Итак, какой url для записи в форме действия, если я хочу использовать путь ресурсов? –

+0

попробуйте запустить 'bundle exec rake routes | grep users'. Вы увидите информацию о маршрутах, с указанием маршрута –

Смежные вопросы