Маршруты не работают - PullRequest
       3

Маршруты не работают

0 голосов
/ 27 апреля 2011

Я не знаю, по какой причине мое приложение не отвечает ни на какие запросы POST, которые не являются URL-адресами REST.

Ниже приведен мой файл rout.rb.

  constraints(Subdomain) do
    resources :invitations

    resources :settings, :only => [:index, :create, :destroy]
    scope "/settings" do
      get "/departments" => "settings#departments"
      get "/job_types" => "settings#job_types"
      get "/industries" => "settings#industries"
      get "/functional_areas" => "settings#functional_areas"
      get "/managers" => "settings#managers"
      get "/hrs_responsible" => "settings#hrs_responsible"
      get "/welcome_text" => "settings#welcome_text"
      post "/save_welcome_text" => "settings#save_welcome_text" <-------
    end
  end

В моем файле просмотра у меня есть

=form_for(@setting), :url => "/settings/save_welcome_text", :method => :post do |f|
  - All the form fields here.
  - f.submit "Save"

Эта таблица содержит сгенерированный HTML и соответствующий журнал сервера.https://gist.github.com/943984

Когда я нажимаю "Отправить", я вижу "Ошибка маршрутизации", что такой маршрут не существует.Из журналов сервера я могу понюхать, что запрос отправляется как POST-запрос.Тем не менее, если я изменю его на «совпадение» с «пост» в файле rout.rb, это работает.Все запросы GET работают нормально.Я что-то пропустил?

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

Вы должны указать свой method в html блоке

=form_for(@setting), :url => "/settings/save_welcome_text", :html => { :method => :post } do |f|
0 голосов
/ 27 апреля 2011

Использование методов get и post в вашем rout.rb основано на том, что, как я понимаю, доступно только для маршрутов участников или коллекции внутри блока ресурсов.

Когда вы делаете это иначе, вы должны использовать match иесли вы хотите сделать его доступным для публикации, вы можете указать его следующим образом:

match "/save_welcome_text" => "settings#save_welcome_text", :via => :post
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...