0

我的网站上有很多课程。我有一个“去课程”表格。当用户输入有效的课程名称时,我成功地将该用户重定向到该课程页面。

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

这适用于所有有效输入,即如果路由存在。当用户输入无效的课程名称会导致无效的路线时,我想处理错误情况。我想检查代码中的路由错误,并通过错误消息通知用户。这可能吗?”

4

2 回答 2

2

不要在控制器中构建自定义路由,而是使用 Rails 约定并将它们放在 config/routes.rb 中:

    resources :courses

这将为您创建路线 /courses/:id。然后您的控制器将简化为:

    def show
      @title = "Courses"
    end

如果你包含你的模型、控制器和 routes.rb 会有所帮助。

于 2011-08-16T17:39:18.090 回答
1

您可以使用它来检查您的路线是否有效:

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

但总的来说,我不喜欢您基于课程创建路线的想法。为什么不只使用一个简单的取景器?

于 2011-08-16T23:04:22.087 回答