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 に答える