0

によると

レーキルート

私はそのようなルートを持っています

types_model GET /types/model(.:format) タイプ#モデル

私はそのような方法を持っています:

def model
  @models = Model.find(:all, :conditions => { :MOD_MFA_ID => params[:model]})
end

そしてそのような見方:

- @manufacturers.each do |manufacturer|
    %li      
      = link_to manufacturer.MFA_BRAND, :controller => "types", :method => "model", :model => "111"

しかし、リンクを使用してパラメーターをメソッド「モデル」に送信するにはどうすればよいですか? 例: localhost/types/model/111 ? Railsサーバーは正常に動作しますか?(今、私はそのようなルートを持っていないことがわかりました)

4

3 に答える 3

4

モデル メソッドに「show」という名前を付けることを検討すると、URL は /types/111 になります。それはあなたのコードをRESTfulにするでしょう

于 2012-08-06T15:14:25.943 に答える
1

メソッドをルートに保持する必要がある場合は、これを追加します。

match "/types/model/:model" => "types#model"
于 2012-08-06T15:34:31.950 に答える
1

いくつかの可能性がありますが、最も重要なのは、アプリケーションを RESTful なクリーン モデルに保つことです (多くの時間を節約できます)。

まず、モデルを適切に定義する必要があります。

  • あれは別のモデルだと思いますか?
  • モデルは「ディレクトリ」の下にあると思いますか?
  • モデルはオブジェクト型の関数だと思いますか?
  • モデルは object 型のグローバル関数だと思いますか?

タイプのネストされたリソースとしてのモデル

この場合、型のインスタンスには複数のモデルのインスタンスがあると考えます (会社がユーザーを持つことができるように)。したがって、モデル用とタイプ用の 2 つの安静なコントローラーが必要です。

このようなルートを次のように定義できます。

resources :types do
   resources :models
end

モデル コントローラーの RESTful メソッドは、type_id が 14、id が 1 の/types/14/model/1に移動すると呼び出されます。

あなたの質問に関しては、それが最もクリーンな方法だと思います。

タイプ名前空間のモデル

この場合、モデル メソッドはタイプの名前空間に含まれますが、コントローラーはモデル オブジェクトのみを処理するためのものです。

namespace :types do
  resources :models
end

/types/models/1を呼び出して、モデル コントローラーの show 関数を呼び出すことができます。

型インスタンスのメソッドとしてのモデル メソッド

この場合、モデル メソッドはインスタンス型の関数です。

resources :types do
   member do
      :model
   end
end

id = 42 で/types/42/modelをリクエストすると、型コントローラーのメソッド関数が呼び出されます。

型のグローバル メソッドとしてのモデル メソッド

この場合、モデル メソッドはグローバル型クラスのグローバル メソッドです。

resources :types do
   collection do
      :model
   end
end

この場合、/types/modelが要求されたときに、タイプ コントローラーのモデル メソッドが呼び出されます。

すべてがここで説明されています。

于 2012-08-06T15:38:44.180 に答える