0

アプリにイベント カテゴリを実装していますが、次の問題が発生しました。ユーザーが既存の URL (「site/types/1」など) を入力すると、目的のカテゴリに到達しますが、site/types/asdf (存在しない URL) を入力すると、空のインデックス ページが表示されます。エラーなし。私は彼に 404 またはエラー ページを表示してもらいたいのですが、'find_by!' を使用する場合は、コントローラーの bang で実現できることを知っています。方法(ですよね?)。ただし、私のクエリは異なり、原則を理解できないようです。

スコープとラムダを使用するより複雑なクエリでこれを機能させるにはどうすればよいですか? ありがとうございました

次のコードがあります。

イベントコントローラー

  def index
    if params[:type]
      @events_future = Event.future_by_type(params[:type])
    else
      @events_future = Event.future_events 
    end
  end

イベントモデル

scope :future_by_type,   lambda { order(...).where(...) }

ルーター

  get 'types/:type', to: 'events#index', as: :type

  resources :types, except: :show
4

2 に答える 2

0

404 例外をスローするだけで、Rails は自動的に 404.html にリダイレクトします。

def index
    if params[:type]
      @events_future = Event.future_by_type(params[:type])
    else
      @events_future = Event.future_events 
    end

    #complex query here
    .......

    !@events_future.empty? || raise ActionController::RoutingError.new('Not Found')
end
于 2013-08-14T14:23:04.173 に答える