Подпишитесь на рассылку о самых интересных материалах в мире веб-разработки :)

Неправильный роутинг в продакшене


(Андрей) #1

Win2008R2, Ruby 1.9.3, Rails 3.2.1, nginx 1.9.7

Есть форма добавления пользователя, которая отправляется по адресу http://localhost/admin/users/create_data. В режиме разработки всё корректно попадает контроллеру и действию, но в продакшене форма уходит на вьюху с таким же адресом, которой нет. Появляется такое сообщение:

Missing template admin/users/create_data, application/create_data with {:locale=>[:ru], :formats=>[:html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :handlers=>[:erb, :builder]}. Searched in: * “C:/Rails3/RailsApps/issp/app/views”

Вьюха в данном случае не нужна, поскольку контроллер должен вернуть текстовый ответ в javascript об успехе или неуспехе. Текущий routes.rb:

Issp::Application.routes.draw do
namespace :admin do
resources :start, :path => '/start(/:action(/:id))(.:format)'
resources :messages, :path => '/messages(/:action(/:id))(.:format)'
resources :search, :path => '/search(/:action(/:id))(.:format)'
resources :depts, :path => '/depts(/:action(/:id))(.:format)'
resources :users, :path => '/users(/:action(/:id))(.:format)'
resources :userm, :path => '/userm(/:action(/:id))(.:format)'
end

namespace :service do
resources :expimp, :path => '/expimp(/:action(/:id))(.:format)'
resources :service_bd, :path => '/service_bd(/:action(/:id))(.:format)'
end

resources :info_mats, :path => ‘/info_mats(/:action(/:id))(.:format)’

root :to => ‘login#index’, as: ‘login’

match ':controller(/:action(/:id))(.:format)'
end

Переменные окружения development.rb и production.rb попытался приравнять, но это не помогло.


(Kvokka) #2

ну так и верни render text: 'foo' в контроллере


(Андрей) #3

Действие итак заканчивается render text:
Именно render text: ‘foo’ не заработал, это наверно 4 рельсы? Мне потребовался еще =>
Убрал весь код, в итоге действие выглядит так:

ДОБАВЛЕНИЕ ДАННЫХ

def create_data
render :text => 'foo’
end

Ошибка та же. Мне не очень очень понятно почему когда рельсы запущены так:

rails s mongrel -p 3001 -P tmp/pids/server3001.pid - то всё работает,

rails s mongrel -p 3001 -e production -P tmp/pids/server3001.pid - а так не работает