Ruby On Rails Маршруты - PullRequest
       10

Ruby On Rails Маршруты

0 голосов
/ 04 мая 2010

Я не могу понять, как получить следующие маршруты. Вот выдержка из моего файла rout.rb:

  map.resources :treatments
  map.root :controller => "home"
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
  map.connect ':action', :controller => 'home' # replaces the need to manually map pure actions to a default controller

  map.resources :bookings
  map.resource :dashboard
  map.resource :home

Теперь я понимаю, что порядок имеет значение, но я не могу заставить их работать правильно.

Я хочу, чтобы http://localhost:3000/bookings/new фактически привело вас к действию http://localhost:3000/bookings/signmeup, если вы либо не вошли в систему, либо не получили логин. Проблема в том, что если я изменю свои маршруты вокруг, когда я попытаюсь создать новое бронирование после , я войду в систему, то это не POST отправка формы и просто возвращает меня на страницу просмотра. Это определенно из-за маршрутов, как будто я переставляю map.resources: бронирование должно быть раньше всех, тогда это работает.

Есть идеи?

1 Ответ

0 голосов
/ 04 мая 2010

Как правило, вы хотите, чтобы ваши маршруты ресурсов предшествовали общим :controller/:action/:id маршрутам (на самом деле, я зашёл настолько далеко, что полностью удалил общие маршруты), так как маршруты, которые определены в первую очередь, имеют приоритет надте, которые назначаются позже.

Что касается перенаправления в / bookings / signmeup, если пользователь не вошел в систему, вы должны обработать это с помощью before_filter:

class BookingsController < ApplicationController
  before_filter :check_login

  # ...

  protected
    # This is a GENERIC example; change to fit your authentication method
    def check_login
      unless user_is_logged_in
        redirect_to ...
      end
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...