Rails 3: проверьте наличие ошибок маршрутизации в коде rails - PullRequest
0 голосов
/ 16 августа 2011

У меня на сайте много курсов. У меня есть форма "иди на курс". Когда пользователь вводит правильное имя курса, я успешно перенаправляю этого пользователя на страницу курса.

 def courses
    @title = "Courses"
    @path  = "#{root_path}"+"course/" + "#{params[:course]}"
    if @path == "/course/"
        @title = "Courses"
        render 'courses'
    else 
        redirect_to @path
    end
end

Это работает для всех допустимых входных данных, если маршрут существует. Я хочу позаботиться о случае ошибки, когда пользователь вводит неверное имя курса, которое может привести к неверному маршруту. Я хочу проверить в коде ошибку маршрутизации и сообщить об этом пользователю с сообщением об ошибке. Это возможно? "

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Вместо создания пользовательских маршрутов в вашем контроллере, используйте соглашение Rails и поместите их в config / rout.rb:

    resources :courses

Это создает маршрут / курсы /: идентификатор для вас. Тогда ваш контроллер упростит до:

    def show
      @title = "Courses"
    end

Было бы полезно, если бы вы включили вашу модель, контроллер и route.rb.

1 голос
/ 17 августа 2011

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

def check_route(route)

    @route_valid = true
    begin
        ActionController::Routing::Routes.recognize_path(@route, :method => :get)
    rescue
        # error means that your route is not valid, so do something to remember that here
        @route_valid = false
    end
end

Но в целом, мне не нравится ваша идея создания маршрута на основе курса.Почему бы просто не использовать простой искатель?

...