1

重複の可能性:
Rails: コントローラーから別のコントローラー アクションを呼び出す

こんにちは、私はレールを初めて使用し、ホームページビューで他のコントローラーでアクションを呼び出したいと考えています。render 'the/relevant/url' を使用しています。

これはビューを呼び出していますが、正しいコントローラー アクション コードをヒットしていないため、ビューが期待するビュー モデルを設定していません。

私はasp.net mvcの世界から来ています。ここではレンダリングアクションを使用でき、これはアクションのコントローラーコードにヒットします。

これはレールで行うことができますか?

できない場合、asp.netはmvcパターンを間違っていますか?

どうもありがとう

アップデート

私の意図は、ホームページのビューから別のコントローラーアクションを呼び出して、メインコントローラーの詳細に関連しないサイドデータを取得することです。今日の見積もりまたはその日のホットディール。

4

3 に答える 3

2

これは悪い習慣と見なされます。コントローラーでビューを構築する場合、データの大部分がステートフルになります。テンプレートのオーバーライドを使用してクレイジーなソリューションをハックすることは可能renderですが、基本的にはこれを行うべきではありません。

代わりにredirect_to other_controller_action_url(デフォルトで HTTP 302 FOUND を送信します) を使用するか、コードが繰り返されている場所を把握し、それをヘルパーまたはプレゼンターに分解します。

編集:そのようなサイドバーに何かを詰め込もうとしている場合、レールスタック全体を使用して応答のそのような小さな部分をレンダリングするべきではありません. 代わりに、ヘルパーを使用して特定のデータを生成し、パーシャルを使用してサイドバーをレンダリングすることをお勧めします。

于 2012-01-08T11:47:47.993 に答える
1

「これはビューを呼び出していますが、正しいコントローラーアクションコードをヒットしていないため、ビューが期待するビューモデルを設定していません.」

非常に紛らわしいです。

Rails を使用した Agile Web Development や O'Reilly Ruby の本など、1 冊か 2 冊の本を使って、もっと詳しく読んでみたいと思います。

ブラウザページ、つまりビューから始めます。したがって、ユーザーがリンクをクリックすると、コントローラー アクションが呼び出され、何らかの処理が行われます。Controller.action を使用して、他のコントローラー アクションを呼び出して処理を実行できます。表示する html は、レンダリングを行う別のコントローラーにリダイレクトしない限り、最初のコントローラーの render ステートメントから取得されます。

asp や php などのレールから来た場合、理解を再配線することを意味し、通常は時間がかかります。私は常温核融合の出身で、この過程を経なければなりませんでした。

于 2012-01-08T11:51:09.887 に答える
1

あるコントローラー アクションからレール内の別のコントローラー アクションに渡すには、redirect_to を使用する必要があります。

于 2012-01-08T11:37:20.657 に答える