0

私の情報のソースは、セクション 2.9 です。

[http://guides.rubyonrails.org/routing.html#connecting-urls-to-code][1]

私がやろうとしているのは、カスタム アクション「検索」と対応するビューを追加することです。

したがって、ドキュメントに記載されているように、config/routes.rb ファイルに次のコードを追加しました。

  resources :dimensions do
  collection do
    get "search"
  end
  end

また、dimensions_controller ファイルで次のように定義しました。

  def search
    @dimensions = Dimension.all

    respond_to do |format|
      format.html # search.html.erb
      format.json { render json: @dimensions }
    end
  end

その後、Rails サーバーを停止して再起動しましたが、/dimensions/home に移動すると、まだ次のエラー メッセージが表示されます。

Couldn't find Dimension with id=search

また、私のパラメータが次のとおりであることを示しています。

{"id"=>"search"}

では、/dimension/search を show アクションではなくコレクション アクションとして解釈するよう指示するコードがもう 1 つ欠けているのでしょうか。

search_dimensions_path が存在することは確認済みなので、routes.rb ファイルのリソース ブロックが実際にパスを追加していることがわかります。問題を引き起こしているのは、それらを別の検索アクションとして解釈しているだけです。

御時間ありがとうございます。

4

2 に答える 2

0

問題が見つかりました:

次のように、コレクションアクションを作成した、ディメンションのconfig/routes.dbファイルでリソース宣言を行う必要がありました。

  resources :dimensions do
  collection do
    get "search"
  end
  end

  resources :dimensions

その後、すべてが期待どおりに機能しました。

于 2012-12-09T15:04:13.720 に答える
0

このコードは正常に動作するはずです。ファイルを見せてもらえroutes.rbますか?

余談ですが、おそらく検索用に別のアクションを用意したくないでしょうindex。アクションを使用するのが望ましい方法です。

于 2012-12-09T05:49:39.460 に答える