0

Ruby on RailsでURLクエリを使用せずに、あるコントローラーのインデックスビューから別のコントローラーのインデックスで使用するために、link_toを介して変数を送信しようとしています。

基本的に、Turma.id(学校のクラスID)をElementos_turma(クラスの人々)コントローラーに渡す必要があります。これを使用して、インデックスをフィルター処理できます。ElementosTurma.find(:all、:conditions => {: turma_id => xxxxx})、選択したクラスの人々を表示します。

それは可能ですか?たぶん、セッション変数を使用せずに?たぶん、変数を最初のコントローラーのメソッドに送信して、他のコントローラーに送信しますか?(もしそうなら、どうやって?RoRはあまり賢くない... :))

4

2 に答える 2

0

必要な情報を取得するための特別な方法は必要ありません。ルートの魔法で十分です。

ルート.dbファイルで、次のようなものを定義できるはずです。

map.resources :class, :has_many => :students

次に、「レーキルート」を実行すると、次のようなルートが表示されます。

class_students GET /classes/:class_id/students(.:format)  {:controller=>"students", :action=>"index"}

あなたはそのようにあなたのビューでそのパスを呼び出すことができます

class_students_path(class_id)

次に、コントローラーでparams [:class_id]にアクセスできます。

ルートの名前はあまりきれいではありませんが、これでうまくいくはずです。

編集 - - - - - - - - - - - - - - - - - - -

あなたのコメントによると、何らかの理由でmap.resourcesを使用することはできません...

 map.class_students '/:class_id/students', :controller => 'students', :action => 'index'

これにより、ビューで使用可能な同じルート、コントローラーで同じパラメーターが生成されます。

そうは言っても、サーバーのバグによってmap.resourcesの使用がどのように妨げられるのかわかりません。

于 2010-01-14T01:02:59.217 に答える
0

リンクにデータを含めずに、リンクを介してデータを転送することはできません。

ただし、ネストされたリソースを使用する必要があるようです。(私は英語を話すので、他の言語に取り組むことはせず、私に来ることをします。)RESTfulになりたい場合は、人々に送信したいURLはおそらく次のようになります。

/classes/1/people/

これは、クラス#1のユーザーを獲得したいことを示す「Railsの方法」であり、Railsには、これを簡単にするための組み込みのルーティングメソッドが用意されています。Railsガイドの「外部からのRailsルーティング」の記事を参照してください。

于 2010-01-14T01:03:56.460 に答える